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 1/4] 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: From bdd16bc20f54ca28c75be1846378155283dc3fa8 Mon Sep 17 00:00:00 2001 From: spannerisms <32842036+spannerisms@users.noreply.github.com> Date: Sat, 3 Jul 2021 09:06:17 -0400 Subject: [PATCH 2/4] dungeon prizes --- compasses.asm | 4 ++-- dungeonmap.asm | 5 ++--- newhud.asm | 50 ++++++++++++++++++++++++++++++++++++++++++++++---- 3 files changed, 50 insertions(+), 9 deletions(-) diff --git a/compasses.asm b/compasses.asm index 5c1acb5..37295c2 100644 --- a/compasses.asm +++ b/compasses.asm @@ -17,7 +17,7 @@ DrawDungeonCompassCounts: LDX $040C : CPX.b #$FF : BEQ .done ; Skip if not in a dungeon CMP.w #$0002 : BEQ ++ ; if CompassMode==2, we don't check for the compass - LDA $7EF364 : AND.l .item_masks, X ; Load compass values to A, mask with dungeon item masks + LDA $7EF364 : AND.l DungeonItemMasks, X ; Load compass values to A, mask with dungeon item masks BEQ .done ; skip if we don't have compass ++ @@ -35,7 +35,7 @@ DrawDungeonCompassCounts: .done RTL -.item_masks ; these are dungeon correlations to $7EF364 - $7EF369 so it knows where to store compasses, etc +DungeonItemMasks: ; these are dungeon correlations to $7EF364 - $7EF369 so it knows where to store compasses, etc dw $8000, $4000, $2000, $1000, $0800, $0400, $0200, $0100 dw $0080, $0040, $0020, $0010, $0008, $0004 diff --git a/dungeonmap.asm b/dungeonmap.asm index 6dabf89..39b4624 100644 --- a/dungeonmap.asm +++ b/dungeonmap.asm @@ -107,15 +107,14 @@ DoDungeonMapBossIcon: LDX.b #$02 STX.w $420B + STA.w $4315 LDA.w #$A260>>1 STA.w $2116 - LDA.w #$0040 - STA.w $4315 STX.w $420B ; done - SEP #$32 + SEP #$30 RTL .boss_id diff --git a/newhud.asm b/newhud.asm index f41ed75..35c562f 100644 --- a/newhud.asm +++ b/newhud.asm @@ -131,9 +131,51 @@ SEP #$30 STA !KEY_ICON_ADDRESS .done_keys - - - + + + + +;-------------------------------------------------------------------------------- +; Draw pendant/crystal icon +;-------------------------------------------------------------------------------- +!PRIZE_ICON = $7EC742 +!P_ICON = $296C +!C_ICON = $295F + + SEP #$20 + LDA.b $1B : BEQ .noprize + + + + LDX.w $040C : BMI .noprize + + REP #$20 + + LDA.l MapMode + BEQ .drawprize + + LDA.l $7EF368 + AND.l DungeonItemMasks,X + BEQ .doneprize + +.drawprize + LDA.l CrystalPendantFlags_2, X + AND.w #$0040 : BNE .is_crystal + + LDA.w #!P_ICON + BRA .doneprize + +.is_crystal + LDA.w #!C_ICON + BRA .doneprize + +.noprize + REP #$20 + LDA.w #$207F + +.doneprize + STA.l !PRIZE_ICON + ;-------------------------------------------------------------------------------- ; Draw Magic Meter !INFINITE_MAGIC = "$7F50CA" @@ -261,4 +303,4 @@ HudHexToDec2Digit: DEC : BNE - + STY $07 ; Store 1s digit -RTS \ No newline at end of file +RTS From 00c59c791fb804f218c94d01dda0e59a9b927ff7 Mon Sep 17 00:00:00 2001 From: spannerisms <32842036+spannerisms@users.noreply.github.com> Date: Sat, 3 Jul 2021 09:25:33 -0400 Subject: [PATCH 3/4] damage/magic stats --- LTTP_RND_GeneralBugfixes.asm | 2 +- stats.asm | 16 +++++++++++----- stats/creditsnew.asm | 12 ++++++------ stats/main.asm | 1 + stats/statConfig.asm | 4 ++-- 5 files changed, 21 insertions(+), 14 deletions(-) diff --git a/LTTP_RND_GeneralBugfixes.asm b/LTTP_RND_GeneralBugfixes.asm index 7eeeb24..d2b7ca5 100644 --- a/LTTP_RND_GeneralBugfixes.asm +++ b/LTTP_RND_GeneralBugfixes.asm @@ -55,7 +55,7 @@ db #$20, #$19, #$08, #$31 ; year/month/day !SRAM_SINK = "$7EF41E" ; <- change this (conflicts with Programmable item 3) ;$7EF418 - Goal Item Counter ;$7EF419 - Service Sequence -;$7EF420 - $7EF468 - Stat Tracking Bank 1 (overlaps with RNG Item Flags) +;$7EF420 - $7EF46D - Stat Tracking Bank 1 (overlaps with RNG Item Flags) ;$7EF450 - $7EF45F - RNG Item (Single) Flags ;$7EF4A0 - $7EF4A7 - Service Request Block !FRESH_FILE_MARKER = "$7EF4F0" ; zero if fresh file diff --git a/stats.asm b/stats.asm index 4bd3699..f76b0e1 100644 --- a/stats.asm +++ b/stats.asm @@ -369,8 +369,8 @@ IncrementBigChestCounter: PLA RTL ;-------------------------------------------------------------------------------- -!DAMAGE_COUNTER = "$FFFFFF" -!MAGIC_COUNTER = "$FFFFFF" +!DAMAGE_COUNTER = $7EF46A +!MAGIC_COUNTER = $7EF46C IncrementDamageTakenCounter_Eight: STA.l $7EF36D PHA : PHP @@ -378,7 +378,9 @@ IncrementDamageTakenCounter_Eight: REP #$21 LDA.l !DAMAGE_COUNTER ADC.w #$0008 - STA.l !DAMAGE_COUNTER + BCC ++ + LDA.w #$FFFF +++ STA.l !DAMAGE_COUNTER + PLP PLA RTL @@ -390,7 +392,9 @@ IncrementDamageTakenCounter_Arb: LDA.b $00 AND.w #$00FF ADC.l !DAMAGE_COUNTER - STA.l !DAMAGE_COUNTER + BCC ++ + LDA.w #$FFFF +++ STA.l !DAMAGE_COUNTER + PLP LDA.l $7EF36D @@ -404,7 +408,9 @@ IncrementMagicUseCounter: LDA.b $00 AND.w #$00FF ADC.l !MAGIC_COUNTER - STA.l !MAGIC_COUNTER + BCC ++ + LDA.w #$FFFF +++ STA.l !MAGIC_COUNTER + PLP : PLA RTL diff --git a/stats/creditsnew.asm b/stats/creditsnew.asm index a8e8ef0..dae6d8b 100644 --- a/stats/creditsnew.asm +++ b/stats/creditsnew.asm @@ -639,11 +639,11 @@ endif %blankline() %blankline() -%bigcreditsleft("GT BIG KEY /22") +%bigcreditsleft("DAMAGE TAKEN") %blankline() -%bigcreditsleft("CHEST TURNS") +%bigcreditsleft("MAGIC USED") %blankline() @@ -724,10 +724,10 @@ endif !TEMPERED_SWORD_Y = 336 !GOLD_SWORD_X = 23 !GOLD_SWORD_Y = 339 -!GT_BIG_KEY_X = 23 -!GT_BIG_KEY_Y = 346 -!CHEST_TURNS_X = 26 -!CHEST_TURNS_Y = 349 +!DAMAGETAKEN_X = 26 +!DAMAGETAKEN_Y = 346 +!MAGICUSED_X = 26 +!MAGICUSED_Y = 349 !BONKS_X = 26 !BONKS_Y = 352 !SAVE_AND_QUITS_X = 26 diff --git a/stats/main.asm b/stats/main.asm index 0a666ad..314de0e 100755 --- a/stats/main.asm +++ b/stats/main.asm @@ -60,6 +60,7 @@ ValueCaps: dw 99 dw 999 dw 9999 + dw 9999 ; TODO - 5 digits need to be fixed at a later date BitMasks: dw $FFFF diff --git a/stats/statConfig.asm b/stats/statConfig.asm index 8fa3194..d921b94 100755 --- a/stats/statConfig.asm +++ b/stats/statConfig.asm @@ -9,8 +9,8 @@ %AddStat($7EF425, 0, 0, 04, 2, !MASTER_SWORD_X, !MASTER_SWORD_Y) %AddStat($7EF426, 0, 4, 04, 2, !TEMPERED_SWORD_X, !TEMPERED_SWORD_Y) %AddStat($7EF426, 0, 0, 04, 2, !GOLD_SWORD_X, !GOLD_SWORD_Y) -%AddStat($7EF42A, 0, 0, 05, 2, !GT_BIG_KEY_X, !GT_BIG_KEY_Y) -%AddStat($7EF468, 0, 0, 08, 3, !CHEST_TURNS_X, !CHEST_TURNS_Y) +%AddStat($7EF46A, 0, 0, 16, 5, !DAMAGETAKEN_X, !DAMAGETAKEN_Y) +%AddStat($7EF46C, 0, 0, 16, 5, !MAGICUSED_X, !MAGICUSED_Y) %AddStat($7EF420, 0, 0, 08, 3, !BONKS_X, !BONKS_Y) %AddStat($7EF42D, 0, 0, 08, 2, !SAVE_AND_QUITS_X, !SAVE_AND_QUITS_Y) %AddStat($7EF449, 0, 0, 08, 2, !DEATHS_X, !DEATHS_Y) From 270f0685ff878275a6f146d8753dc9487f582460 Mon Sep 17 00:00:00 2001 From: spannerisms <32842036+spannerisms@users.noreply.github.com> Date: Sun, 4 Jul 2021 05:21:48 -0400 Subject: [PATCH 4/4] add byrna/cape magic tracking --- hardmode.asm | 5 ++--- stats.asm | 19 ++++++++++++++++--- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/hardmode.asm b/hardmode.asm index 0bda634..1b7fe8b 100644 --- a/hardmode.asm +++ b/hardmode.asm @@ -33,7 +33,7 @@ CalculateByrnaUsage: PLX ++ LDA $7EF36E ; thing we wrote over -RTL + JML IncrementMagicUseCounterByrna ;-------------------------------------------------------------------------------- CalculateCapeUsage: LDA $1B : BEQ ++ @@ -51,8 +51,7 @@ CalculateCapeUsage: LDA.l HardModeExclusionCapeUsage, X : STA $4C ; set cape decrement timer PLX ++ - LDA $7EF36E ; thing we wrote over -RTL + JML IncrementMagicUseCounterOne ;-------------------------------------------------------------------------------- ActivateInvulnerabilityOrDont: LDA $1B : BEQ .nowhere_special diff --git a/stats.asm b/stats.asm index f76b0e1..4263c5d 100644 --- a/stats.asm +++ b/stats.asm @@ -383,7 +383,7 @@ IncrementDamageTakenCounter_Eight: ++ STA.l !DAMAGE_COUNTER + PLP PLA -RTL + RTL IncrementDamageTakenCounter_Arb: PHP @@ -398,10 +398,12 @@ IncrementDamageTakenCounter_Arb: + PLP LDA.l $7EF36D -RTL + RTL IncrementMagicUseCounter: STA.l $7EF36E + +IncrementMagicUseCounterByrna: PHA : PHP LDA !LOCK_STATS : BNE + REP #$21 @@ -413,7 +415,18 @@ IncrementMagicUseCounter: ++ STA.l !MAGIC_COUNTER + PLP : PLA -RTL + RTL + +IncrementMagicUseCounterOne: + LDA !LOCK_STATS : BNE + + REP #$20 + LDA.l !MAGIC_COUNTER + INC + BEQ ++ + STA.l !MAGIC_COUNTER +++ SEP #$20 ++ LDA.l $7EF36E + RTL ;-------------------------------------------------------------------------------- !OW_MIRROR_COUNTER = "$7EF43A"