From 18a73e3b88436a4b242d9c62ec7d7859e2636ff8 Mon Sep 17 00:00:00 2001 From: Kara Alexandra Date: Fri, 12 Dec 2025 21:33:08 -0600 Subject: [PATCH] Add flag to make the baserom work --- LTTP_RND_GeneralBugfixes.asm | 1 + enemizer/hooks/underworld_sprite_hooks.asm | 4 -- enemizer/underworld_sprites.asm | 49 ++++++++++++---------- hooks.asm | 6 ++- keydrop/standing_items.asm | 10 +++-- 5 files changed, 39 insertions(+), 31 deletions(-) diff --git a/LTTP_RND_GeneralBugfixes.asm b/LTTP_RND_GeneralBugfixes.asm index c513e5f..8adce18 100644 --- a/LTTP_RND_GeneralBugfixes.asm +++ b/LTTP_RND_GeneralBugfixes.asm @@ -50,6 +50,7 @@ dw !ROM_VERSION_HIGH function hexto555(h) = ((((h&$FF)/8)<<10)|(((h>>8&$FF)/8)<<5)|(((h>>16&$FF)/8)<<0)) ; Feature flags, run asar with -DFEATURE_X=1 to enable +!FEATURE_FIX_BASEROM ?= 0 ;================================================================================ diff --git a/enemizer/hooks/underworld_sprite_hooks.asm b/enemizer/hooks/underworld_sprite_hooks.asm index e97c33a..ab83c1f 100644 --- a/enemizer/hooks/underworld_sprite_hooks.asm +++ b/enemizer/hooks/underworld_sprite_hooks.asm @@ -61,7 +61,3 @@ LDA.b [Scrap00],Y org $89C416 LDA.b [Scrap00],Y - - - - diff --git a/enemizer/underworld_sprites.asm b/enemizer/underworld_sprites.asm index f931db7..cb80068 100644 --- a/enemizer/underworld_sprites.asm +++ b/enemizer/underworld_sprites.asm @@ -1,7 +1,12 @@ LoadUnderworldSprites: STA.b Scrap00 ; part one of what we replaced - LDA.w #UWSpritesData>>16 : STA.b Scrap02 ; set the bank to 28 for now - LDA.w $048E + if !FEATURE_FIX_BASEROM + LDA.w #$89 + else + LDA.w #UWSpritesData>>16 ; set the bank to 28 for now + endif + STA.b Scrap02 + LDA.w $048E RTL GetSpriteSlot16Bit: @@ -11,37 +16,37 @@ GetSpriteSlot16Bit: RTL GeldmanDrawOverride: - PLA : PLA : PLA ; fix the call stack - LDA.l DRFlags+1 : AND.b #$08 : BEQ .vanilla + PLA : PLA : PLA ; fix the call stack + LDA.l DRFlags+1 : AND.b #$08 : BEQ .vanilla - LDA.b #$01 - STA.w $0DC0,X - JML Sprite_4C_Geldman_do_indeed_draw + LDA.b #$01 + STA.w $0DC0,X + JML Sprite_4C_Geldman_do_indeed_draw .vanilla - JSL Sprite_PrepOAMCoordLong - JML Sprite_4C_Geldman_continue + JSL Sprite_PrepOAMCoordLong + JML Sprite_4C_Geldman_continue StalfosKnightDrawOverride: - LDA.l DRFlags+1 : AND.b #$08 : BEQ .vanilla + LDA.l DRFlags+1 : AND.b #$08 : BEQ .vanilla - JSL Sprite_PrepOAMCoordLong - LDA.b #$12 - JML Sprite_DrawShadowLong + JSL Sprite_PrepOAMCoordLong + LDA.b #$12 + JML Sprite_DrawShadowLong .vanilla - JSL Sprite_PrepOAMCoordLong - RTL + JSL Sprite_PrepOAMCoordLong + RTL BlobDrawOverride: - PLA : PLA : PLA ; fix the call stack - LDA.l DRFlags+1 : AND.b #$08 : BEQ .vanilla + PLA : PLA : PLA ; fix the call stack + LDA.l DRFlags+1 : AND.b #$08 : BEQ .vanilla - LDA.b #$05 - STA.w $0DC0,X + LDA.b #$05 + STA.w $0DC0,X - JML SpriteDraw_Blob_head_popping_out + JML SpriteDraw_Blob_head_popping_out .vanilla - JSL Sprite_PrepOAMCoordLong - JML SpriteDraw_Blob_bad_gfx \ No newline at end of file + JSL Sprite_PrepOAMCoordLong + JML SpriteDraw_Blob_bad_gfx diff --git a/hooks.asm b/hooks.asm index 6989852..3b62d94 100755 --- a/hooks.asm +++ b/hooks.asm @@ -2729,8 +2729,10 @@ NOP #2 ; this fixes Link's direction after mirroring and falling after entering ;-------------------------------------------------------------------------------- ; Enable new room header table ;-------------------------------------------------------------------------------- -org $81B5E6 -LDA.b #$30 +if not(!FEATURE_FIX_BASEROM) + org $81B5E6 + LDA.b #$30 +endif ;================================================================================ ;-------------------------------------------------------------------------------- diff --git a/keydrop/standing_items.asm b/keydrop/standing_items.asm index 915b233..23598cf 100644 --- a/keydrop/standing_items.asm +++ b/keydrop/standing_items.asm @@ -91,7 +91,11 @@ InitializeMirrorHDMA: org $89D62E UWSpritesPointers: ; 0x250 bytes for 0x128 rooms' 16-bit pointers -org $89D87E +if !FEATURE_FIX_BASEROM + org $81DB67 +else + org $89D87E +endif UWPotsPointers: ; 0x250 bytes for 0x128 rooms' 16-bit pointers org $89DACE @@ -188,7 +192,7 @@ RevealPotItem: LDA.b RoomIndex : ASL : TAX - LDA.l UWPotsPointers,X : STA.b Scrap00 ; we may move this + LDA.l UWPotsPointers, X : STA.b Scrap00 ; we may move this LDA.w #UWPotsPointers>>16 : STA.b Scrap02 LDY.w #$FFFD : LDX.w #$FFFF @@ -869,7 +873,7 @@ CheckIfPotIsSpecial: BIT.b $BF : BVC .upper ; if $BF has bit 14 set, it's upper layer ORA.w #$2000 ; set the lower layer bit ($2000) .upper - STA.b $90 ; cache tilemap offset + STA.b $90 ; cache tilemap offset LDA.l UWPotsPointers,X : TAX LDY.w #$0000