From f97618da6a980f2ad9ed3ec48f6bdd32ce72276c Mon Sep 17 00:00:00 2001 From: Smallhacker Date: Wed, 3 Jan 2018 23:33:45 -0500 Subject: [PATCH 1/3] Initial, partially unsuccessful version --- LTTP_RND_GeneralBugfixes.asm | 2 + graphicsoverride.asm | 62 +++++++++++++++++++++++++ hooks.asm | 34 ++++++++++++++ ice_bombos_floor.bin | Bin 0 -> 128 bytes roomloading.asm | 86 +++++++++++++++++++++++++++++++++++ 5 files changed, 184 insertions(+) create mode 100644 graphicsoverride.asm create mode 100644 ice_bombos_floor.bin create mode 100644 roomloading.asm diff --git a/LTTP_RND_GeneralBugfixes.asm b/LTTP_RND_GeneralBugfixes.asm index be72e2e..2a80069 100644 --- a/LTTP_RND_GeneralBugfixes.asm +++ b/LTTP_RND_GeneralBugfixes.asm @@ -123,6 +123,8 @@ incsrc compasses.asm incsrc doorframefixes.asm ;incsrc shopkeeper.asm incsrc cuccostorm.asm +incsrc roomloading.asm +incsrc graphicsoverride.asm incsrc hashalphabet.asm ; <- TAKE OUT THE EXTRA ORGS IN HERE - THIS IS WHY WE COULDN'T ADD MORE FILES EARLIER warnpc $A18000 diff --git a/graphicsoverride.asm b/graphicsoverride.asm new file mode 100644 index 0000000..830d319 --- /dev/null +++ b/graphicsoverride.asm @@ -0,0 +1,62 @@ +macro OverwriteVramTile(firstTileIndex, count) + LDA.w #+512*8*8*4/16 + LDX.b # + JSR UploadTileToVram +endmacro + +GraphicsOverrideHook: + JSL .resumeOriginalCode + + LDA $0A ; Floor tileset loaded + CMP #$0A ; Floor tileset index used by Ice and Mire + BEQ .loadedIceOrMireFloor + RTL + +.loadedIceOrMireFloor + LDA $040C ; Load dungeon number + CMP #$12 ; Ice Palace + BEQ .isInIcePalace + RTL + +.isInIcePalace + ; We've just loading the floor tiles in Ice Palace. + ; Replace the bridge tiles with the bombos medallion + + LDA.b #IcePalaceMedallionGfx>>16 + STA $02 + REP #$20 + LDA.w #IcePalaceMedallionGfx + STA $00 + + %OverwriteVramTile($CA, 2) + %OverwriteVramTile($DA, 2) + + SEP #$20 + RTL + +.resumeOriginalCode + ; Overwritten instructions: + PHB + LDA.b #$00 + PHA + PLB + LDA.b #$80 + JML GraphicsOverrideResume + +; A = VRAM word address to upload to (Actual VRAM address / 2) +; X = Tiles to upload +; $00-$02 = Pointer to graphics data +UploadTileToVram: + ; TODO: This should probably be optimized with a DMA + STA $2116 + TXA : ASL #4 : TAX ; X = Amount of words to upload (Tiles to upload * 16) +- LDA [$00] + STA $2118 + INC $00 + INC $00 + DEX + BNE - + RTS + +IcePalaceMedallionGfx: + incbin ice_bombos_floor.bin \ No newline at end of file diff --git a/hooks.asm b/hooks.asm index 200363c..08b75bd 100644 --- a/hooks.asm +++ b/hooks.asm @@ -1925,3 +1925,37 @@ org $0298AD ; <- Bank02.asm:4495 (LDA $010E : CMP.b #$43) JSL.l WalkDownIntoTavern NOP #1 ;================================================================================ + +;================================================================================ +; Hooks for roomloading.asm +;-------------------------------------------------------------------------------- +org $02895D ; <- Bank02.asm:1812 (JSL Dungeon_LoadRoom) + JSL LoadRoomHook +;-------------------------------------------------------------------------------- +org $028BE7 ; <- Bank02.asm:2299 (JSL Dungeon_LoadRoom) + JSL LoadRoomHook +;-------------------------------------------------------------------------------- +org $029309 ; <- Bank02.asm:3533 (JSL Dungeon_LoadRoom) + JSL LoadRoomHook +;-------------------------------------------------------------------------------- +org $02C2F3 ; <- Bank02.asm:10391 (JSL Dungeon_LoadRoom) + JSL LoadRoomHook +;================================================================================ + +;================================================================================ +; Hook for graphicsoverride.asm +;-------------------------------------------------------------------------------- +org $00E1DB ; <- Bank00.asm:4866 (PHB : PHK : PLB : LDA.b #$80) + JML GraphicsOverrideHook + NOP + GraphicsOverrideResume: +;-------------------------------------------------------------------------------- +org $028BE7 ; <- Bank02.asm:2299 (JSL Dungeon_LoadRoom) + JSL LoadRoomHook +;-------------------------------------------------------------------------------- +org $029309 ; <- Bank02.asm:3533 (JSL Dungeon_LoadRoom) + JSL LoadRoomHook +;-------------------------------------------------------------------------------- +org $02C2F3 ; <- Bank02.asm:10391 (JSL Dungeon_LoadRoom) + JSL LoadRoomHook +;================================================================================ \ No newline at end of file diff --git a/ice_bombos_floor.bin b/ice_bombos_floor.bin new file mode 100644 index 0000000000000000000000000000000000000000..87b992bf9ebe4598c0d5dede8cfc6c3361046da8 GIT binary patch literal 128 zcmcEDQ&armz2^N$``i0>)$gfy{?q?K{(=30{|)sG{~7)>+>y07ed62q-@pGh{Ym_1 z`R|ea7yh5@f0+L<{$~Wq#cibOuzkdGY^*qVkCqQCAoelK|;vdZaVE)JUU+lkI fe`f!k{+siw@!@lNAo>4{{}}%;|6>2cf6*QQ7;#E+ literal 0 HcmV?d00001 diff --git a/roomloading.asm b/roomloading.asm new file mode 100644 index 0000000..34b5b03 --- /dev/null +++ b/roomloading.asm @@ -0,0 +1,86 @@ +LoadRoomHook: + JSL $01873A ; Dungeon_LoadRoom (Bank01.asm:726) + REP #$10 ; 16 bit XY + LDX $A0 ; Room ID + LDA RoomCallbackTable, X + SEP #$10 ; 8 bit XY + JSL $00879c ; UseImplicitRegIndexedLocalJumpTable +; Callback routines: + dl NoCallback ; 00 + dl IcePalace1 ; 01 + +NoCallback: + RTL + +!RL_TILE = 2 +!RL_LINE = 128 + +macro setTilePointer(roomX, roomY, quadX, quadY) + ; Left-to-right math. Should be equivalent to 0x7e2000+(roomX*2)+(roomY*128)+(quadX*64)+(quadY*4096) + LDX.w #*32+*2+*32+*2 +endmacro + +macro writeTile() + STA.l $7E2000,x + INX #2 +endmacro + +!IP_BORDER = #$08D0 +!IP_ICON_1 = #$0CCA +!IP_ICON_2 = #$0CCB +!IP_ICON_3 = #$0CDA +!IP_ICON_4 = #$0CDB + +!IP1_X = 14 +!IP1_Y = 18 + +IcePalace1: + REP #$30 ; 16 AXY + %setTilePointer(!IP1_X, !IP1_Y, 1, 1) + LDA.w !IP_BORDER + %writeTile() + %writeTile() + %writeTile() + %writeTile() + + %setTilePointer(!IP1_X, !IP1_Y+1, 1, 1) + %writeTile() + LDA.w !IP_ICON_1 : %writeTile() + LDA.w !IP_ICON_2 : %writeTile() + LDA.w !IP_BORDER : %writeTile() + + %setTilePointer(!IP1_X, !IP1_Y+2, 1, 1) + %writeTile() + LDA.w !IP_ICON_3 : %writeTile() + LDA.w !IP_ICON_4 : %writeTile() + LDA.w !IP_BORDER : %writeTile() + + %setTilePointer(!IP1_X, !IP1_Y+3, 1, 1) + %writeTile() + %writeTile() + %writeTile() + %writeTile() + SEP #$30 ; 8 AXY + RTL + +RoomCallbackTable: + db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $01, $00 ; 00x + db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 01x + db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 02x + db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 03x + db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 04x + db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 05x + db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 06x + db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 07x + db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 08x + db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 09x + db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 0Ax + db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 0Bx + db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 0Cx + db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 0Dx + db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 0Ex + db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 0Fx + db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 0Fx + db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 10x + db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 11x + db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 12x \ No newline at end of file From 3dde5bcbbd4572217540a35bbcdb0174d8b351a5 Mon Sep 17 00:00:00 2001 From: Smallhacker Date: Thu, 4 Jan 2018 01:17:20 -0500 Subject: [PATCH 2/3] Added Bombos platform in first Ice Palace room --- LTTP_RND_GeneralBugfixes.asm | 2 +- graphicsoverride.asm | 62 ----------------------------------- hooks.asm | 18 +++------- ice_bombos_floor.bin | Bin 128 -> 0 bytes ice_palace_floor.bin | Bin 0 -> 2048 bytes icepalacegraphics.asm | 47 ++++++++++++++++++++++++++ 6 files changed, 53 insertions(+), 76 deletions(-) delete mode 100644 graphicsoverride.asm delete mode 100644 ice_bombos_floor.bin create mode 100644 ice_palace_floor.bin create mode 100644 icepalacegraphics.asm diff --git a/LTTP_RND_GeneralBugfixes.asm b/LTTP_RND_GeneralBugfixes.asm index 2a80069..8d62bbc 100644 --- a/LTTP_RND_GeneralBugfixes.asm +++ b/LTTP_RND_GeneralBugfixes.asm @@ -124,7 +124,7 @@ incsrc doorframefixes.asm ;incsrc shopkeeper.asm incsrc cuccostorm.asm incsrc roomloading.asm -incsrc graphicsoverride.asm +incsrc icepalacegraphics.asm incsrc hashalphabet.asm ; <- TAKE OUT THE EXTRA ORGS IN HERE - THIS IS WHY WE COULDN'T ADD MORE FILES EARLIER warnpc $A18000 diff --git a/graphicsoverride.asm b/graphicsoverride.asm deleted file mode 100644 index 830d319..0000000 --- a/graphicsoverride.asm +++ /dev/null @@ -1,62 +0,0 @@ -macro OverwriteVramTile(firstTileIndex, count) - LDA.w #+512*8*8*4/16 - LDX.b # - JSR UploadTileToVram -endmacro - -GraphicsOverrideHook: - JSL .resumeOriginalCode - - LDA $0A ; Floor tileset loaded - CMP #$0A ; Floor tileset index used by Ice and Mire - BEQ .loadedIceOrMireFloor - RTL - -.loadedIceOrMireFloor - LDA $040C ; Load dungeon number - CMP #$12 ; Ice Palace - BEQ .isInIcePalace - RTL - -.isInIcePalace - ; We've just loading the floor tiles in Ice Palace. - ; Replace the bridge tiles with the bombos medallion - - LDA.b #IcePalaceMedallionGfx>>16 - STA $02 - REP #$20 - LDA.w #IcePalaceMedallionGfx - STA $00 - - %OverwriteVramTile($CA, 2) - %OverwriteVramTile($DA, 2) - - SEP #$20 - RTL - -.resumeOriginalCode - ; Overwritten instructions: - PHB - LDA.b #$00 - PHA - PLB - LDA.b #$80 - JML GraphicsOverrideResume - -; A = VRAM word address to upload to (Actual VRAM address / 2) -; X = Tiles to upload -; $00-$02 = Pointer to graphics data -UploadTileToVram: - ; TODO: This should probably be optimized with a DMA - STA $2116 - TXA : ASL #4 : TAX ; X = Amount of words to upload (Tiles to upload * 16) -- LDA [$00] - STA $2118 - INC $00 - INC $00 - DEX - BNE - - RTS - -IcePalaceMedallionGfx: - incbin ice_bombos_floor.bin \ No newline at end of file diff --git a/hooks.asm b/hooks.asm index 08b75bd..c08a101 100644 --- a/hooks.asm +++ b/hooks.asm @@ -1945,17 +1945,9 @@ org $02C2F3 ; <- Bank02.asm:10391 (JSL Dungeon_LoadRoom) ;================================================================================ ; Hook for graphicsoverride.asm ;-------------------------------------------------------------------------------- -org $00E1DB ; <- Bank00.asm:4866 (PHB : PHK : PLB : LDA.b #$80) - JML GraphicsOverrideHook - NOP - GraphicsOverrideResume: -;-------------------------------------------------------------------------------- -org $028BE7 ; <- Bank02.asm:2299 (JSL Dungeon_LoadRoom) - JSL LoadRoomHook -;-------------------------------------------------------------------------------- -org $029309 ; <- Bank02.asm:3533 (JSL Dungeon_LoadRoom) - JSL LoadRoomHook -;-------------------------------------------------------------------------------- -org $02C2F3 ; <- Bank02.asm:10391 (JSL Dungeon_LoadRoom) - JSL LoadRoomHook +org $00E64D ; <- Bank00.asm:5656 (STZ $00 : STX $01 : STA $02) + JML BgGraphicsLoading + BgGraphicsLoadingCancel: + RTS : NOP + BgGraphicsLoadingResume: ;================================================================================ \ No newline at end of file diff --git a/ice_bombos_floor.bin b/ice_bombos_floor.bin deleted file mode 100644 index 87b992bf9ebe4598c0d5dede8cfc6c3361046da8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 128 zcmcEDQ&armz2^N$``i0>)$gfy{?q?K{(=30{|)sG{~7)>+>y07ed62q-@pGh{Ym_1 z`R|ea7yh5@f0+L<{$~Wq#cibOuzkdGY^*qVkCqQCAoelK|;vdZaVE)JUU+lkI fe`f!k{+siw@!@lNAo>4{{}}%;|6>2cf6*QQ7;#E+ diff --git a/ice_palace_floor.bin b/ice_palace_floor.bin new file mode 100644 index 0000000000000000000000000000000000000000..4729f171f6d08793f8dbb1327d02948a79d69cb8 GIT binary patch literal 2048 zcmbtVeM}Q)7=Mp$woFFZH1mvzfK@be2Ej>*l`Ca_O*37VDdGnhw)T%1U^79CdLLpm zW?RsiWy2PWTbNtog7YJ;3LNAX#UK)AGKUpgK0C&gvQDtJch8<{RrD|a@Sfb;%RTS= z-t+u^zxUTk$^>~{h#oWgwz)4gRf#jdOycH5P#-xezrkm&mH8tw<$E>Dg#&;_OeTT6?EiUT7Azy}gkLk=h)5J|9F zOa_{mXsbc82!bS8ttJyqn@m=#B$4M_!-?)iCwG0;exZNW*`dk92_85PyPzHV;Veu6 zH^{Gy&h;cKlpHgri$DWE!4KfXFAriJ08GQ~?f&7po(+s!yudYZdEqMm3@_6RJjbi^ zZ%;S2wT_O3Lh|15RwY~MVgAzxwP6kRiroS+x+b=M6jOa7Rv;kH#tX6Sl|xcM8vg3{B&V)zDP+K8h{McVP=vkYa86OW zQF)R2n7*ZRtysllZ}Z?CI10018DjjR>jhhG_eU1E*?pE9Up%JQY8WDOfINv}YXOaw5N~tbT1Hlw$`Oumv{2 zc32NU8ZFcMI?{b~ATFW+WL}2FsDKU_LLEA|{amhC$kaQJ)W;Q1Y*mRv=6SBU(ChSP zg_kIsm0MxE{7oqKex`J7euP*`p~9Mn+OYmQBbnZ9NZoYwyuz{NmJb`rb~DD?*+%t~Cq|t0Tbv_AS~I$IZNw@xO751f z$}{mLQU9=j0rjyO9X1DMIH$Qa#e$1(AXc1c0!}J=Wo9aPGOpnrjjNIB2>i0P(`c_aQg)=Qy5blsROmsA zp~ui-e_G^+;0kq*fa-`;l-0+(DB#z3CrPFQJL3aMz08#z4nKII8M}|#rw(e@|5#90 zc&_x<9ioxPl2^b|M6d|TkR=Xl@Fow;9$f@PG3=m<8kEy zxC8^}9wzMadH&NA;kS@W-?@NOl@sNchyB>2iiOYjd57I|8N#v*$L?H}X*`|D_&x^j z6dV(~Xg9G|iY;B>16 + STA $02 + REP #$20 + LDA.w #IcePalaceFloorGfx + STA $00 + LDX.b #64*2 ; Tiles to load * 2 +- + ; Unrolled loop to upload half a tile + LDA [$00] : STA $2118 : INC $00 : INC $00 + LDA [$00] : STA $2118 : INC $00 : INC $00 + LDA [$00] : STA $2118 : INC $00 : INC $00 + LDA [$00] : STA $2118 : INC $00 : INC $00 + LDA [$00] : STA $2118 : INC $00 : INC $00 + LDA [$00] : STA $2118 : INC $00 : INC $00 + LDA [$00] : STA $2118 : INC $00 : INC $00 + LDA [$00] : STA $2118 : INC $00 : INC $00 + DEX + BNE - + + SEP #$20 + JML BgGraphicsLoadingCancel + +IcePalaceFloorGfx: + incbin ice_palace_floor.bin \ No newline at end of file From c5b97deda154dfacb5b0022fec80953b54f3dd40 Mon Sep 17 00:00:00 2001 From: Smallhacker Date: Thu, 4 Jan 2018 23:35:28 -0500 Subject: [PATCH 3/3] More platforms, fixed graphics when switching floors --- hooks.asm | 16 +++++++-- icepalacegraphics.asm | 54 +++++++++++++++++++++++++----- roomloading.asm | 76 ++++++++++++++++++++++++------------------- 3 files changed, 101 insertions(+), 45 deletions(-) diff --git a/hooks.asm b/hooks.asm index c08a101..adb661f 100644 --- a/hooks.asm +++ b/hooks.asm @@ -1943,11 +1943,23 @@ org $02C2F3 ; <- Bank02.asm:10391 (JSL Dungeon_LoadRoom) ;================================================================================ ;================================================================================ -; Hook for graphicsoverride.asm +; Hooks into the "Reloading all graphics" routine ;-------------------------------------------------------------------------------- org $00E64D ; <- Bank00.asm:5656 (STZ $00 : STX $01 : STA $02) JML BgGraphicsLoading BgGraphicsLoadingCancel: RTS : NOP BgGraphicsLoadingResume: -;================================================================================ \ No newline at end of file +;================================================================================ + +;================================================================================ +; Hook when updating the floor tileset in dungeons (such as between floors) +;-------------------------------------------------------------------------------- +org $00DF62 ; <- Bank00.asm:4672 (LDX.w #$0000 : LDY.w #$0040) + JML ReloadingFloors + NOP : NOP + ReloadingFloorsResume: +org $00DF6E ; <- A few instructions later, right after JSR Do3To4High16Bit + ReloadingFloorsCancel: +;================================================================================ + diff --git a/icepalacegraphics.asm b/icepalacegraphics.asm index 89aedb4..aed2502 100644 --- a/icepalacegraphics.asm +++ b/icepalacegraphics.asm @@ -1,18 +1,24 @@ +ShouldOverrideFileLoad: + ; Y = Graphics file being loaded + CPY #$0A ; 0A = Ice/Mire floor file + BNE .no + + LDA $040C ; Dungeon number + CMP #$12 ; Ice Palace + BEQ .yes + .no + CLC : RTS + .yes + SEC : RTS + BgGraphicsLoading: ; Instructions overwritten STZ $00 STX $01 STA $02 - ; Y = Graphics file being loaded - CPY #$0A ; 0A = Ice/Mire floor file - BNE .useDefaultGraphics - - LDA $040C ; Dungeon number - CMP #$12 ; Ice Palace - BEQ .useSpecialIcePalaceFile - -.useDefaultGraphics + JSR ShouldOverrideFileLoad + BCS .useSpecialIcePalaceFile JML BgGraphicsLoadingResume .useSpecialIcePalaceFile @@ -43,5 +49,35 @@ BgGraphicsLoading: SEP #$20 JML BgGraphicsLoadingCancel +ReloadingFloors: + SEP #$30 ; 8 AXY + LDA $7EC2F8 ; Floor file that has been decompressed + TAY + JSR ShouldOverrideFileLoad + REP #$30 ; 16 AXY + BCS .replaceWithSpecialIcePalaceFile + + ; Instructions overwritten by hook + LDX.w #$0000 + LDY.w #$0040 + + JML ReloadingFloorsResume + +.replaceWithSpecialIcePalaceFile + ; Block move our hardcoded graphics into the output buffer + LDX.w #IcePalaceFloorGfx ; Source + LDY.w #$0000 ; Target + LDA.w #$0800 ; Length + PHB + MVN $7F, IcePalaceFloorGfx>>16 + PLB + + ; Pretend that we ran the original routine + LDX.w #$0800 + LDA.w #$6600 + STA $03 + + JML ReloadingFloorsCancel + IcePalaceFloorGfx: incbin ice_palace_floor.bin \ No newline at end of file diff --git a/roomloading.asm b/roomloading.asm index 34b5b03..9dfc4ba 100644 --- a/roomloading.asm +++ b/roomloading.asm @@ -7,7 +7,9 @@ LoadRoomHook: JSL $00879c ; UseImplicitRegIndexedLocalJumpTable ; Callback routines: dl NoCallback ; 00 - dl IcePalace1 ; 01 + dl IcePalaceBombosSE ; 01 + dl IcePalaceBombosSW ; 02 + dl IcePalaceBombosNE ; 03 NoCallback: RTL @@ -25,42 +27,48 @@ macro writeTile() INX #2 endmacro -!IP_BORDER = #$08D0 -!IP_ICON_1 = #$0CCA -!IP_ICON_2 = #$0CCB -!IP_ICON_3 = #$0CDA -!IP_ICON_4 = #$0CDB - -!IP1_X = 14 -!IP1_Y = 18 - -IcePalace1: +!BOMBOS_BORDER = #$08D0 +!BOMBOS_ICON_1 = #$0CCA +!BOMBOS_ICON_2 = #$0CCB +!BOMBOS_ICON_3 = #$0CDA +!BOMBOS_ICON_4 = #$0CDB +macro DrawBombosPlatform(roomX, roomY, quadX, quadY) REP #$30 ; 16 AXY - %setTilePointer(!IP1_X, !IP1_Y, 1, 1) - LDA.w !IP_BORDER - %writeTile() - %writeTile() - %writeTile() - %writeTile() + %setTilePointer(, , , ) + LDA.w !BOMBOS_BORDER + %writeTile() + %writeTile() + %writeTile() + %writeTile() - %setTilePointer(!IP1_X, !IP1_Y+1, 1, 1) - %writeTile() - LDA.w !IP_ICON_1 : %writeTile() - LDA.w !IP_ICON_2 : %writeTile() - LDA.w !IP_BORDER : %writeTile() + %setTilePointer(, +1, , ) + %writeTile() + LDA.w !BOMBOS_ICON_1 : %writeTile() + LDA.w !BOMBOS_ICON_2 : %writeTile() + LDA.w !BOMBOS_BORDER : %writeTile() - %setTilePointer(!IP1_X, !IP1_Y+2, 1, 1) - %writeTile() - LDA.w !IP_ICON_3 : %writeTile() - LDA.w !IP_ICON_4 : %writeTile() - LDA.w !IP_BORDER : %writeTile() + %setTilePointer(, +2, , ) + %writeTile() + LDA.w !BOMBOS_ICON_3 : %writeTile() + LDA.w !BOMBOS_ICON_4 : %writeTile() + LDA.w !BOMBOS_BORDER : %writeTile() - %setTilePointer(!IP1_X, !IP1_Y+3, 1, 1) - %writeTile() - %writeTile() - %writeTile() - %writeTile() + %setTilePointer(, +3, , ) + %writeTile() + %writeTile() + %writeTile() + %writeTile() SEP #$30 ; 8 AXY +endMacro + +IcePalaceBombosSE: + %DrawBombosPlatform(14, 18, 1, 1) + RTL +IcePalaceBombosSW: + %DrawBombosPlatform(14, 18, 0, 1) + RTL +IcePalaceBombosNE: + %DrawBombosPlatform(14, 18, 1, 0) RTL RoomCallbackTable: @@ -71,13 +79,13 @@ RoomCallbackTable: db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 04x db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 05x db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 06x - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 07x + db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $02, $00 ; 07x db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 08x db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 09x db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 0Ax db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 0Bx db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 0Cx - db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 0Dx + db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $03, $00 ; 0Dx db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 0Ex db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 0Fx db $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 ; 0Fx