From f403ca10da9e009599a531be8cdcd20a61b4801c Mon Sep 17 00:00:00 2001 From: spannerisms <32842036+spannerisms@users.noreply.github.com> Date: Wed, 30 Jun 2021 07:15:37 -0400 Subject: [PATCH] boss icons --- LTTP_RND_GeneralBugfixes.asm | 7 ++ bossicons.4bpp | Bin 0 -> 1536 bytes dungeonmap.asm | 150 +++++++++++++++++++++++++++++++++++ hooks.asm | 18 ++++- stats/creditsnew.asm | 2 +- tables.asm | 11 ++- 6 files changed, 185 insertions(+), 3 deletions(-) create mode 100644 bossicons.4bpp create mode 100644 dungeonmap.asm diff --git a/LTTP_RND_GeneralBugfixes.asm b/LTTP_RND_GeneralBugfixes.asm index 9635e8f..7eeeb24 100644 --- a/LTTP_RND_GeneralBugfixes.asm +++ b/LTTP_RND_GeneralBugfixes.asm @@ -94,6 +94,8 @@ db #$20, #$19, #$08, #$31 ; year/month/day !ONEMIND_ID = $7F5072 !ONEMIND_TIMER = $7F5073 +function hexto555(h) = ((((h&$FF)/8)<<10)|(((h>>8&$FF)/8)<<5)|(((h>>16&$FF)/8)<<0)) + ;================================================================================ incsrc hooks.asm @@ -206,6 +208,7 @@ incsrc toast.asm incsrc darkroomitems.asm incsrc fastcredits.asm incsrc msu.asm +incsrc dungeonmap.asm warnpc $A58000 ;org $228000 ; contrib area @@ -289,6 +292,10 @@ org $339000 incbin sheet178.gfx warnpc $339600 +org $339600 +BossMapIconGFX: +incbin bossicons.4bpp + org $328000 Extra_Text_Table: incsrc itemtext.asm diff --git a/bossicons.4bpp b/bossicons.4bpp new file mode 100644 index 0000000000000000000000000000000000000000..d377f120cdf4efd2fdd597e64c0a596e083ebf1b GIT binary patch literal 1536 zcmXw34NMbf7=GGb+oKdIQlSWzqpL~~p)yoZq!mRVLq!Ea7|^Ie)PauaWC%hS*^HV= zV9Qj{HH4_E%rWN=Lk5*B6U}~{bJ8&w4QvhtZ8c&6TW+sQmdjo83P!;Nbg#BS(uH?E?NZ|Cdm?R@(E^DcDKp8u~ya6yC_@L@RFA@ZjRzSLHS(MZ}eDY^H{}@OT2tRX@~hm1@~Y$9obDrvFK}d~opB+$$6F`v6UKQ(eYD{X-4k6w z*pB%RBd`1X75Gh(6F-yhS-1o9YSS8(EtBRyNH5s#zb}_PXFWY+r*?(m6prFIjd-g{ z`iS%gO2dO=)p;xOmX|S)Nq-t^s8w_EIn5cKcX8kI4l#~h>o7bkI)1M+K6$W6gk>_-7(`q za!mym*Li3LyzuWXh~0t&JkV{ zMCSoQp`}yfF1j%UKQ-%JBAQm*EOgJSl+D0g@}V5ZaT32^KdmY(RXEmJD%oMbuI$jSDGJ;|KF_n{R}VyAD0@`_RA zxOoEiDOCZjwPVzfIn*2C+}xS&=JG@0S#Plvy!>&FeGC6urFN-@Oe)1_jeS=|SQj%@ zQ?78BY~Xd*`kbfu@20h5wP`jR07a92A(8OiG%9wyRti3JNFuFUaQv+yDRo literal 0 HcmV?d00001 diff --git a/dungeonmap.asm b/dungeonmap.asm new file mode 100644 index 0000000..6dabf89 --- /dev/null +++ b/dungeonmap.asm @@ -0,0 +1,150 @@ +DoDungeonMapBossIcon: + LDA.b $14 + CMP.b #$09 + BEQ .dungeonmap + +.cave + CMP.b #$01 + RTL + +.dungeonmap + + LDX.w $040C + BMI .cave + +; LDA.l DungeonMapIcons +; AND.b #$01 +; BNE ++ +; +; INC ; so it's not equal to $01 +; BRA .cave + + ; get dungeon boss room +++ REP #$30 + LDA.l $8AE817,X + ASL + TAX + + ; get sprite pointer for room + LDA.l $89D62E,X + INC ; to skip the "sort" + TAX + + ; get first byte to make sure it isn't an empty room + SEP #$20 + LDA.l $890000,X + CMP.b #$FF + BNE ++ + + SEP #$30 + BRA .cave + + ; check first sprite +++ LDA.l $890002,X + SEP #$10 + + ; match boss id + LDX.b #$0B + +-- CMP.l .boss_id,X + BEQ .match + + DEX + BPL -- + + TXA + BRA .cave + +.match + LDA.b #$80 + STA.w $2121 + + REP #$30 + + TXA + ASL ; x32 for palette data + ASL + ASL + ASL + ASL + + TAX + + ; prep dma + ASL ; x128 for graphics + ASL + ADC.w #BossMapIconGFX + STA.w $4312 + + PHY + LDY.w #32 + + SEP #$20 +-- LDA.l .boss_palettes,X + STA.w $2122 + INX + DEY + BNE -- + + PLY + + + ; GFX DMA + REP #$20 + SEP #$10 + + LDA.w #$1801 + STA.w $4310 + + LDX.b #BossMapIconGFX>>16 + STX.w $4314 + + LDA.w #$A060>>1 + STA.w $2116 + LDA.w #$0040 + STA.w $4315 + + LDX.b #$02 + STX.w $420B + + LDA.w #$A260>>1 + STA.w $2116 + LDA.w #$0040 + STA.w $4315 + + STX.w $420B + + ; done + SEP #$32 + RTL + +.boss_id + db $53 ; armos + db $54 ; lanmolas + db $09 ; moldorm + + db $7A ; agahnim + + db $92 ; helma king + db $8C ; arrghus + db $88 ; mothula + db $CE ; blind + db $A3 ; khold shell + db $BD ; vitreous + db $CB ; trinexx + + db $D6 ; ganon + +.boss_palettes + dw hexto555($000000), hexto555($F8F8F8), hexto555($D86060), hexto555($5070C8), hexto555($B090F8), hexto555($282828), hexto555($F0A068), hexto555($B06028), hexto555($B88820), hexto555($E8A800), hexto555($F8F8F8), hexto555($000000), hexto555($000000), hexto555($000000), hexto555($000000), hexto555($000000) + dw hexto555($000000), hexto555($F8F8F8), hexto555($50C090), hexto555($408858), hexto555($305830), hexto555($282828), hexto555($D8A800), hexto555($E06018), hexto555($787040), hexto555($585030), hexto555($484018), hexto555($000000), hexto555($000000), hexto555($000000), hexto555($000000), hexto555($000000) + dw hexto555($000000), hexto555($F8F8F8), hexto555($903018), hexto555($D85800), hexto555($F8A828), hexto555($282828), hexto555($E88068), hexto555($B04038), hexto555($F8D018), hexto555($C8B818), hexto555($A89818), hexto555($806818), hexto555($503818), hexto555($000000), hexto555($000000), hexto555($000000) + dw hexto555($000000), hexto555($F8F8F8), hexto555($C04080), hexto555($B08828), hexto555($E8C070), hexto555($282828), hexto555($90D038), hexto555($688020), hexto555($000000), hexto555($000000), hexto555($000000), hexto555($000000), hexto555($000000), hexto555($000000), hexto555($000000), hexto555($000000) + dw hexto555($000000), hexto555($F8F8F8), hexto555($4848B0), hexto555($7870E8), hexto555($A8A8F8), hexto555($282828), hexto555($F8F8F8), hexto555($181818), hexto555($A00028), hexto555($D03828), hexto555($E88820), hexto555($000000), hexto555($000000), hexto555($000000), hexto555($000000), hexto555($000000) + dw hexto555($000000), hexto555($F8F8F8), hexto555($903018), hexto555($D85800), hexto555($F8A828), hexto555($282828), hexto555($E88068), hexto555($B04038), hexto555($000000), hexto555($000000), hexto555($000000), hexto555($000000), hexto555($000000), hexto555($000000), hexto555($000000), hexto555($000000) + dw hexto555($000000), hexto555($F8F8F8), hexto555($4848B0), hexto555($7870E8), hexto555($A8A8F8), hexto555($282828), hexto555($F8A840), hexto555($D85820), hexto555($000000), hexto555($000000), hexto555($000000), hexto555($000000), hexto555($000000), hexto555($000000), hexto555($000000), hexto555($000000) + dw hexto555($000000), hexto555($F8F8F8), hexto555($903018), hexto555($D85800), hexto555($F8A828), hexto555($282828), hexto555($E88068), hexto555($B04038), hexto555($88D0F8), hexto555($7890F8), hexto555($000000), hexto555($000000), hexto555($000000), hexto555($000000), hexto555($000000), hexto555($000000) + dw hexto555($000000), hexto555($F8F8F8), hexto555($4828C8), hexto555($4828F0), hexto555($8070F8), hexto555($282828), hexto555($F8C8F8), hexto555($E088B0), hexto555($7098C0), hexto555($58B0E8), hexto555($D0F8F8), hexto555($000000), hexto555($000000), hexto555($000000), hexto555($000000), hexto555($000000) + dw hexto555($000000), hexto555($F8F8F8), hexto555($50C090), hexto555($408858), hexto555($305830), hexto555($282828), hexto555($D8A800), hexto555($E06018), hexto555($000000), hexto555($000000), hexto555($000000), hexto555($000000), hexto555($000000), hexto555($000000), hexto555($000000), hexto555($000000) + dw hexto555($000000), hexto555($F8F8F8), hexto555($4848B0), hexto555($7870E8), hexto555($A8A8F8), hexto555($282828), hexto555($989868), hexto555($78C0A8), hexto555($A00028), hexto555($D03828), hexto555($E88820), hexto555($503860), hexto555($505060), hexto555($788890), hexto555($484868), hexto555($707068) + dw hexto555($000000), hexto555($F8F8F8), hexto555($B090F8), hexto555($C0A028), hexto555($886008), hexto555($282828), hexto555($B83010), hexto555($E86040), hexto555($385088), hexto555($5088A8), hexto555($88C8A0), hexto555($000000), hexto555($000000), hexto555($000000), hexto555($000000), hexto555($000000) diff --git a/hooks.asm b/hooks.asm index 6a48892..4c70433 100755 --- a/hooks.asm +++ b/hooks.asm @@ -2662,4 +2662,20 @@ org $079506 : JSL IncrementDamageTakenCounter_Eight ; underworld pit org $0780C6 : JSL IncrementDamageTakenCounter_Arb -org $07B0B1 : JSL IncrementMagicUseCounter \ No newline at end of file +org $07B0B1 : JSL IncrementMagicUseCounter + +;================================================================================ +; Boss icons +org $0AEEDF : db $02 ; big icon +org $0AEAFF : db $48 ; X position + +org $0AEED4 ; disable flashing + BRA ++ : NOP #6 : ++ + +org $0AEEF2 + SBC.b #$03 : STA.w $0801,X + LDA.b #$03 : STA.w $0802,X + LDA.b #$31 : STA.w $0803,X + +org $008BE5 ; hijack stripes for boss GFX transfer + JSL DoDungeonMapBossIcon diff --git a/stats/creditsnew.asm b/stats/creditsnew.asm index 1706d45..a8e8ef0 100644 --- a/stats/creditsnew.asm +++ b/stats/creditsnew.asm @@ -563,7 +563,7 @@ CreditsLineBlank: ;=================================================================================================== -print "Line number: !CLINE | Expected: 302" +print "Credits line number: !CLINE | Expected: 302" if !CLINE > 302 error "Too many credits lines. !CLINE > 302" diff --git a/tables.asm b/tables.asm index b26436f..9c54411 100644 --- a/tables.asm +++ b/tables.asm @@ -421,7 +421,16 @@ org $30809B ; PC 0x18009B - 0x18009C OneMindTimer: dw 0 ;-------------------------------------------------------------------------------- -; 0x18009D - 0x18009F (unused) +; 0x18009D - Dungeon map icons +; .... ...b +; +; b - boss icon +;-------------------------------------------------------------------------------- +org $30809D +DungeonMapIcons: +db $01 +;-------------------------------------------------------------------------------- +; 0x18009E - 0x18009F (unused) ;-------------------------------------------------------------------------------- org $3080A0 ; PC 0x1800A0 - 0x1800A4 Bugfix_MirrorlessSQToLW: