diff --git a/Platform/Apple/virtual/src/core/mem.s b/Platform/Apple/virtual/src/core/mem.s index 8e1dc136..7bd54a74 100644 --- a/Platform/Apple/virtual/src/core/mem.s +++ b/Platform/Apple/virtual/src/core/mem.s @@ -2787,6 +2787,7 @@ advSingleAnim: rts .dbgout +crout +waitKey + bit $c050 sta setAuxRd sta setAuxWr rts @@ -2828,12 +2829,14 @@ applyPatch: ; loop to skip patches until we find the right one - dec reqLen ; it starts at 1, which means first patch. beq + - ldy #1 + ldy #0 + lda (pSrc),y ; low byte of patch len + pha + iny lda (pSrc),y ; hi byte of patch len inx ; -> pSrc+1 jsr .ptradd ; skip by # pages in patch - dey - lda (pSrc),y ; low byte of patch len + pla ; get lo byte of len back jsr .srcadd ; skip pSrc past last partial page in patch jmp - + !if DEBUG = 2 { jsr .dbgC2 } diff --git a/Platform/Apple/virtual/src/plasma/gamelib.plh b/Platform/Apple/virtual/src/plasma/gamelib.plh index 0fca045a..4e8bc627 100644 --- a/Platform/Apple/virtual/src/plasma/gamelib.plh +++ b/Platform/Apple/virtual/src/plasma/gamelib.plh @@ -65,6 +65,7 @@ import gamelib predef initPlayerXP(player)#0 predef loadFrameImg(img)#0 predef loadMainFrameImg()#0 + predef lookupResourcePart(sectionNum, resourceNum)#1 predef makeModifier(name, value)#1 predef max(a, b)#1 predef memcpy(pSrc, pDst, len)#0 diff --git a/Platform/Apple/virtual/src/plasma/gameloop.pla b/Platform/Apple/virtual/src/plasma/gameloop.pla index ab627af5..ceab8753 100644 --- a/Platform/Apple/virtual/src/plasma/gameloop.pla +++ b/Platform/Apple/virtual/src/plasma/gameloop.pla @@ -82,7 +82,7 @@ byte inScript = FALSE export word skyNum = 9 export word groundNum = 10 -export byte portraitNum = 1 +export byte portraitNum = 46 word triggerOriginX, triggerOriginY word triggerTbl @@ -1361,7 +1361,7 @@ end /////////////////////////////////////////////////////////////////////////////////////////////////// // Look up the partition for a resource. // sectioNum: 1=map2d, 2=map3d, 3=portrait -def lookupResourcePart(sectionNum, resourceNum)#1 +export def lookupResourcePart(sectionNum, resourceNum)#1 word ptr byte n @@ -1381,7 +1381,8 @@ def lookupResourcePart(sectionNum, resourceNum)#1 if curMapPartition > 0; return curMapPartition; fin return 2 fin - if n < 1 or n > 20; fatal("lkupFail2"); fin + printf1("n=%d\n", n) + if n < 0 or n > 20; fatal("lkupFail2"); fin return n end @@ -1415,9 +1416,9 @@ def printVersion()#0 crout() ^$24 = 25 puts("V ") - setWindow(183, 192, 168, 254) + setWindow(183, 192, 161, 261) clearWindow() - setWindow(183, 192, 175, 245) + setWindow(183, 192, 168, 252) rawDisplayStr("^YV ") p = pResourceIndex len = readAuxByte(p) @@ -2237,7 +2238,8 @@ export def setPortrait(portraitNum)#0 // Load the portrait image and display it part = lookupResourcePart(3, portraitNum) - if part > 1; part = curMapPartition; fin // Look on disk 1 or current disk only + // Commented out below, because it prevents cycling thru all portraits (in god mode) + // NO: if part > 1; part = curMapPartition; fin // Look on disk 1 or current disk only mmgr(START_LOAD, part) curPortrait = auxMmgr(QUEUE_LOAD, portraitNum<<8 | RES_TYPE_PORTRAIT) curPortraitNum = portraitNum diff --git a/Platform/Apple/virtual/src/plasma/godmode.pla b/Platform/Apple/virtual/src/plasma/godmode.pla index 7ea9c0cb..01d95760 100644 --- a/Platform/Apple/virtual/src/plasma/godmode.pla +++ b/Platform/Apple/virtual/src/plasma/godmode.pla @@ -78,16 +78,24 @@ end /////////////////////////////////////////////////////////////////////////////////////////////////// def nextPortrait()#1 - portraitNum = portraitNum + 1 - if portraitNum > PO_LAST; portraitNum = 1; fin + while TRUE + portraitNum = portraitNum + 1 + if portraitNum > PO_LAST; portraitNum = 1; fin + printf1("portrait %d\n", portraitNum) + if lookupResourcePart(3, portraitNum); break; fin + loop setPortrait(portraitNum) return 0 end /////////////////////////////////////////////////////////////////////////////////////////////////// def prevPortrait()#1 - portraitNum = portraitNum - 1 - if portraitNum < 1; portraitNum = PO_LAST; fin + while TRUE + portraitNum = portraitNum - 1 + if portraitNum < 1; portraitNum = PO_LAST; fin + printf1("portrait %d\n", portraitNum) + if lookupResourcePart(3, portraitNum); break; fin + loop setPortrait(portraitNum) return 0 end