diff --git a/data/creditscharmapsmall_yellow.txt b/data/creditscharmapsmall_yellow.txt index c1c047c..016c4aa 100644 --- a/data/creditscharmapsmall_yellow.txt +++ b/data/creditscharmapsmall_yellow.txt @@ -29,3 +29,4 @@ Z=33 '=35 -=36 .=37 +*=FF diff --git a/framehook.asm b/framehook.asm index 126b2aa..d3b1bfb 100644 --- a/framehook.asm +++ b/framehook.asm @@ -2,21 +2,28 @@ ; Frame Hook ;-------------------------------------------------------------------------------- FrameHookAction: - JSL Module_MainRouting - JSL CheckMusicLoadRequest - PHP : REP #$30 : PHA - SEP #$20 - LDA.l StatsLocked : BNE ++ - REP #$20 ; set 16-bit accumulator - LDA.l LoopFrames : INC : STA.l LoopFrames : BNE + - LDA.l LoopFrames+2 : INC : STA.l LoopFrames+2 - + - LDA.l GameMode : CMP.w #$010E : BNE ++ ; move this to nmi hook? - LDA.l MenuFrames : INC : STA.l MenuFrames : BNE ++ - LDA.l MenuFrames+2 : INC : STA.l MenuFrames+2 - ++ - REP #$30 : PLA : PLP - + JSL Module_MainRouting + JSL CheckMusicLoadRequest + PHP : REP #$30 : PHA + SEP #$20 + LDA.l StatsLocked : BNE ++ + REP #$20 ; set 16-bit accumulator + LDA.l LoopFrames : INC : STA.l LoopFrames : BNE + + LDA.l LoopFrames+2 : INC : STA.l LoopFrames+2 + + + ; move this to nmi hook? + LDA.l GameMode : CMP.w #$010E : BNE + + ; item select menu + LDA.l MenuFrames : INC : STA.l MenuFrames : BNE ++ + LDA.l MenuFrames+2 : INC : STA.l MenuFrames+2 + + + LDA.l GameMode : CMP.w #$030E : BEQ .map ; underworld map + LDA.l GameMode : CMP.w #$070E : BNE ++ ; overworld map + .map + LDA.l MapFrames : INC : STA.l MapFrames : BNE ++ + LDA.l MapFrames+2 : INC : STA.l MapFrames+2 + ++ + REP #$30 : PLA : PLP RTL !NMI_MW = "$7F5047" @@ -47,37 +54,37 @@ JML NMIHookReturn ;-------------------------------------------------------------------------------- PostNMIHookAction: - LDA.w NMIAux : BEQ + - PHK : PEA.w .return-1 ; push stack for RTL return - JMP.w [NMIAux] - .return - STZ.w NMIAux ; zero bank byte of NMI hook pointer - + - JSR TransferItemGFX - LDA.b INIDISPQ : STA.w INIDISP ; thing we wrote over, turn screen back on + LDA.w NMIAux : BEQ + + PHK : PEA.w .return-1 ; push stack for RTL return + JMP.w [NMIAux] + .return + STZ.w NMIAux ; zero bank byte of NMI hook pointer + + + JSR TransferItemGFX + LDA.b INIDISPQ : STA.w INIDISP ; thing we wrote over, turn screen back on JML PostNMIHookReturn ;-------------------------------------------------------------------------------- TransferItemGFX: ; Only used for shops now but could be used for anything. We should look at how door rando does this ; and try to unify one approach. - REP #$30 - LDX.w ItemStackPtr : BEQ .done - TXA : BIT.w #$0040 : BNE .fail ; Crash if we have more than 16 queued (should never happen.) - DEX #2 - - - LDA.l ItemGFXStack,X : STA.w ItemGFXPtr - LDA.l ItemTargetStack,X : STA.w ItemGFXTarget - PHX - JSL TransferItemToVRAM - REP #$10 - PLX - DEX #2 - BPL - + REP #$30 + LDX.w ItemStackPtr : BEQ .done + TXA : BIT.w #$0040 : BNE .fail ; Crash if we have more than 16 queued (should never happen.) + DEX #2 + - + LDA.l ItemGFXStack,X : STA.w ItemGFXPtr + LDA.l ItemTargetStack,X : STA.w ItemGFXTarget + PHX + JSL TransferItemToVRAM + REP #$10 + PLX + DEX #2 + BPL - - STZ.w ItemStackPtr - .done - SEP #$30 + STZ.w ItemStackPtr + .done + SEP #$30 RTS - .fail - BRK #$00 + .fail + BRK #$00 diff --git a/sram.asm b/sram.asm index 9c05d50..14d7fd3 100644 --- a/sram.asm +++ b/sram.asm @@ -308,7 +308,7 @@ HeartContainerCounter: skip 1 ; Total number of heart containers collected (in DeathCounter: skip 1 ; Number of deaths (integer) skip 1 ; Reserved FluteCounter: skip 1 ; Number of times fluted (integer) -skip 4 ; +MapFrames: skip 4 ; Total map time in frames (32-bit integer) RNGItem: skip 2 ; RNG Item SwordlessBossKills: skip 1 ; Number of bosses killed without a sword (integer) FaerieRevivalCounter: skip 1 ; Number of faerie revivals (integer) diff --git a/stats.asm b/stats.asm index 492b6de..d8b3d2f 100644 --- a/stats.asm +++ b/stats.asm @@ -36,7 +36,7 @@ DungeonHoleWarpTransition: BRA StatTransitionCounter DungeonHoleEntranceTransition: JSL EnableForceBlank - + LDA.l SilverArrowsAutoEquip : AND.b #$02 : BEQ + LDA.w EntranceIndex : CMP.b #$7B : BNE + ; skip unless falling to ganon's room LDA.l BowTracking : AND.b #$40 : BEQ + ; skip if we don't have silvers @@ -44,7 +44,7 @@ DungeonHoleEntranceTransition: CMP.b #$03 : !BGE + ; skip if the bow is already silver !ADD.b #$02 : STA.l BowEquipment ; increase bow to silver + - + BRA StatTransitionCounter DungeonStairsTransition: JSL Dungeon_SaveRoomQuadrantData @@ -88,27 +88,27 @@ IncrementSmallKeys: RTL ;-------------------------------------------------------------------------------- IncrementSmallKeysNoPrimary: - STA.l CurrentSmallKeys ; thing we wrote over, write small key count - PHX - LDA.l StatsLocked : BNE + - LDA.l SmallKeyCounter : INC : STA.l SmallKeyCounter - + - JSL UpdateKeys - LDA.b IndoorsFlag : BEQ + ; skip room check if outdoors - PHP : REP #$20 ; set 16-bit accumulator - LDA.b RoomIndex : CMP.w #$0087 : BNE ++ ; hera basement - LDA.b $A8 : AND.w #$0003 : CMP.w #$0002 : BNE ++ ; must be quadrant 2 - LDA.w SprDropsItem, X : AND.w #$00FF : BNE ++ ; must not be a standing item - PLP : PHY - LDY.b #$24 - JSL AddInventory - PLY : BRA + - ++ - PLP - + - LDA.b #$01 : STA.l UpdateHUDFlag - JSL HUD_RebuildLong - PLX + STA.l CurrentSmallKeys ; thing we wrote over, write small key count + PHX + LDA.l StatsLocked : BNE + + LDA.l SmallKeyCounter : INC : STA.l SmallKeyCounter + + + JSL UpdateKeys + LDA.b IndoorsFlag : BEQ + ; skip room check if outdoors + PHP : REP #$20 ; set 16-bit accumulator + LDA.b RoomIndex : CMP.w #$0087 : BNE ++ ; hera basement + LDA.b $A8 : AND.w #$0003 : CMP.w #$0002 : BNE ++ ; must be quadrant 2 + LDA.w SprDropsItem, X : AND.w #$00FF : BNE ++ ; must not be a standing item + PLP : PHY + LDY.b #$24 + JSL AddInventory + PLY : BRA + + ++ + PLP + + + LDA.b #$01 : STA.l UpdateHUDFlag + JSL HUD_RebuildLong + PLX RTL ;-------------------------------------------------------------------------------- DecrementSmallKeys: @@ -188,9 +188,9 @@ CountAllKey: ;-------------------------------------------------------------------------------- IncrementAgahnim2Sword: - PHA - JSL IncrementBossSword - PLA + PHA + JSL IncrementBossSword + PLA RTL ;-------------------------------------------------------------------------------- IncrementDeathCounter: @@ -239,22 +239,22 @@ RTL DecrementItemCounter: PHA LDA.l StatsLocked : BNE + - REP #$20 + REP #$20 LDA.l TotalItemCounter : DEC : STA.l TotalItemCounter - SEP #$20 + SEP #$20 + PLA RTL ;-------------------------------------------------------------------------------- IncrementBigChestCounter: - JSL Dungeon_SaveRoomQuadrantData ; thing we wrote over - PHA - LDA.l StatsLocked : BNE + - LDA.l BigKeysBigChests : INC : AND.b #$0F : TAX - LDA.l BigKeysBigChests : AND.b #$F0 : STA.l BigKeysBigChests - TXA : ORA.l BigKeysBigChests : STA.l BigKeysBigChests - + - PLA + JSL Dungeon_SaveRoomQuadrantData ; thing we wrote over + PHA + LDA.l StatsLocked : BNE + + LDA.l BigKeysBigChests : INC : AND.b #$0F : TAX + LDA.l BigKeysBigChests : AND.b #$F0 : STA.l BigKeysBigChests + TXA : ORA.l BigKeysBigChests : STA.l BigKeysBigChests + + + PLA RTL ;-------------------------------------------------------------------------------- IncrementDamageTakenCounter_Eight: @@ -338,8 +338,8 @@ IncrementUWMirror: RTL ;-------------------------------------------------------------------------------- IncrementSpentRupees: - DEC A : BPL .subtractRupees - LDA.w #$0000 : STA.l CurrentRupees + DEC A : BPL .subtractRupees + LDA.w #$0000 : STA.l CurrentRupees RTL .subtractRupees PHA : PHP @@ -355,18 +355,18 @@ IndoorTileTransitionCounter: JMP StatTransitionCounter ;-------------------------------------------------------------------------------- IndoorSubtileTransitionCounter: - ;JSL HeartPieceSetRedraw ; set redraw flag for items - STZ.w SomariaSwitchFlag ; stuff we wrote over - STZ.w SpriteRoomTag + ;JSL HeartPieceSetRedraw ; set redraw flag for items + STZ.w SomariaSwitchFlag ; stuff we wrote over + STZ.w SpriteRoomTag JMP StatTransitionCounter ;-------------------------------------------------------------------------------- StatsFinalPrep: PHA : PHX : PHP SEP #$30 ; set 8-bit accumulator and index registers - + LDA.l StatsLocked : BNE .ramPostOnly INC : STA.l StatsLocked - + JSL IncrementFinalSword LDA.l HighestMail : INC : STA.l HighestMail ; add green mail to mail count @@ -385,12 +385,12 @@ StatsFinalPrep: LDA.l RupeesSpent : !ADD.l DisplayRupees : STA.l RupeesCollected LDA.l RupeesSpent+1 : ADC.l DisplayRupees+1 : STA.l RupeesCollected+1 - REP #$20 + REP #$20 LDA.l TotalItemCounter : !SUB.l ChestsOpened : STA.l NonChestCounter .done PLP : PLX : PLA LDA.b #$19 : STA.b GameMode ; thing we wrote over, load triforce room - STZ.b GameSubMode - STZ.b SubSubModule + STZ.b GameSubMode + STZ.b SubSubModule RTL diff --git a/stats/credits.asm b/stats/credits.asm index ef6b8da..cd7e09e 100755 --- a/stats/credits.asm +++ b/stats/credits.asm @@ -504,7 +504,16 @@ CreditsLineBlank: %blankline() %blankline() -%smallcredits("SPRITE DEVELOPMENT", "yellow") +%smallcredits("GWAAKIWI * DUNGEON MAPS", "yellow") + +%blankline() + +%bigcredits("KARAFRUIT") + +%blankline() +%blankline() + +%smallcredits("SPRITE DEVELOPMENT", "green") %blankline() @@ -525,7 +534,7 @@ CreditsLineBlank: %blankline() %blankline() -%smallcredits("YOUR SPRITE BY", "green") +%smallcredits("YOUR SPRITE BY", "yellow") %blankline() @@ -535,7 +544,7 @@ CreditsLineBlank: %blankline() %blankline() -%smallcredits("MSU SUPPORT", "yellow") +%smallcredits("MSU SUPPORT", "green") %blankline() @@ -544,7 +553,7 @@ CreditsLineBlank: %blankline() %blankline() -%smallcredits("PALETTE SHUFFLER", "green") +%smallcredits("PALETTE SHUFFLER", "yellow") %blankline() @@ -553,7 +562,7 @@ CreditsLineBlank: %blankline() %blankline() -%smallcredits("WEBSITE LOGO", "yellow") +%smallcredits("WEBSITE LOGO", "green") %blankline() @@ -623,12 +632,6 @@ endif %bigcredits("HTTPS://ALTTPR.COM/DISCORD") -%emptyline() -%emptyline() -%emptyline() -%emptyline() -%emptyline() -%emptyline() %emptyline() %emptyline() @@ -752,14 +755,13 @@ endif %blankline() +%bigcreditsleft("TOTAL MAP TIME") + +%blankline() + %bigcreditsleft("TOTAL LAG TIME") %blankline() -%blankline() - - -%blankline() -%blankline() %blankline() diff --git a/stats/fonttable.asm b/stats/fonttable.asm index 9c68676..a9c500f 100644 --- a/stats/fonttable.asm +++ b/stats/fonttable.asm @@ -265,4 +265,6 @@ dw $3D99 ; - ; $FB dw $0000 ; ; dw $0000 ; ; dw $0000 ; ; -dw $0000 ; ; + +; yellow dot +dw $2DFA ; ; FF diff --git a/stats/main.asm b/stats/main.asm index a413dbd..5ec90a6 100755 --- a/stats/main.asm +++ b/stats/main.asm @@ -25,8 +25,8 @@ PreparePointer: LDY.w #$0000 RTL -; Regular stat: XXXX X00L LLLL LLLL BBBB SSSS CCC- ---- ---- ---- AAAA AAAA AAAA AAAA AAAA AAAA -; Time stat: XXXX X01L LLLL LLLL ---- ---- ---- ---- ---- ---- AAAA AAAA AAAA AAAA AAAA AAAA +; Regular stat: XXXX X00L LLLL LLLL BBBB SSSS CCC- ---- ---- ---- AAAA AAAA AAAA AAAA AAAA AAAA +; Time stat: XXXX X01L LLLL LLLL ---- ---- ---- ---- ---- ---- AAAA AAAA AAAA AAAA AAAA AAAA ; End of data: 1111 1111 1111 1111 ; X X offset (measured in 8x8 tiles) @@ -174,7 +174,7 @@ FindLine: !FRAMES_PER_SECOND = 60 !FRAMES_PER_MINUTE = 60*60 !FRAMES_PER_HOUR = 60*60*60 -!MAX_FRAME_COUNT = 59*60+59*60+59*60+99 +!MAX_FRAME_COUNT = (99*60)+(59*60)+(59*60)+59 macro CountUnits(framesPerUnit, unitCounter) STZ.b @@ -196,7 +196,7 @@ endmacro !ColonOffset = $8A !PeriodOffset = $4D -BlankCreditsTile = $883D +BlankCreditsTile = $3D88 RenderCreditsStatCounter: PHB @@ -498,45 +498,45 @@ RenderLineNumber: RTS LoadCreditsTiles: - JSL CopyFontToVRAM ; What we wrote over + JSL CopyFontToVRAM ; What we wrote over - REP #$10 - LDA.b #$80 : STA.w VMAIN - LDA.b #$01 : STA.w DMAP0 - LDA.b #$18 : STA.w BBAD0 + REP #$10 + LDA.b #$80 : STA.w VMAIN + LDA.b #$01 : STA.w DMAP0 + LDA.b #$18 : STA.w BBAD0 - ; Item tiles - LDX.w #$8200 : STX.w VMADDL - LDA.b #FileSelectNewGraphics>>16 : STA.w A1B0 - LDX.w #FileSelectNewGraphics : STX.w A1T0L - LDX.w #$0C00 : STX.w DAS0L - LDA.b #$01 : STA.w DMAENABLE + ; Item tiles + LDX.w #$8200 : STX.w VMADDL + LDA.b #FileSelectNewGraphics>>16 : STA.w A1B0 + LDX.w #FileSelectNewGraphics : STX.w A1T0L + LDX.w #$0C00 : STX.w DAS0L + LDA.b #$01 : STA.w DMAENABLE - ; Small characters A-Z - LDX.w #$7F00 : STX.w VMADDL - LDA.b #SmallCharacters>>16 : STA.w A1B0 - LDX.w #SmallCharacters : STX.w A1T0L - LDX.w #$0200 : STX.w DAS0L - LDA.b #$01 : STA.w DMAENABLE + ; Small characters A-Z + LDX.w #$7F00 : STX.w VMADDL + LDA.b #SmallCharacters>>16 : STA.w A1B0 + LDX.w #SmallCharacters : STX.w A1T0L + LDX.w #$0200 : STX.w DAS0L + LDA.b #$01 : STA.w DMAENABLE - SEP #$10 + SEP #$10 RTL LoadOverworldCreditsTiles: - JSL CopyFontToVRAM ; What we wrote over - REP #$10 + JSL CopyFontToVRAM ; What we wrote over + REP #$10 - ; Small characters A-Z - LDA.b #$80 : STA.w VMAIN - LDA.b #$01 : STA.w DMAP0 - LDA.b #$18 : STA.w BBAD0 - LDA.b #SmallCharacters>>16 : STA.w A1B0 - LDX.w #SmallCharacters : STX.w A1T0L - LDX.w #$0200 : STX.w DAS0L - LDX.w #$7F00 : STX.w VMADDL - LDA.b #$01 : STA.w DMAENABLE + ; Small characters A-Z + LDA.b #$80 : STA.w VMAIN + LDA.b #$01 : STA.w DMAP0 + LDA.b #$18 : STA.w BBAD0 + LDA.b #SmallCharacters>>16 : STA.w A1B0 + LDX.w #SmallCharacters : STX.w A1T0L + LDX.w #$0200 : STX.w DAS0L + LDX.w #$7F00 : STX.w VMADDL + LDA.b #$01 : STA.w DMAENABLE - SEP #$10 + SEP #$10 RTL CheckFontTable: @@ -577,23 +577,23 @@ RTS ; Dialog Pointer Override ;-------------------------------------------------------------------------------- EndingSequenceTableOverride: - PHY - PHX - TYX - LDA.l EndingSequenceText, X - PLX - STA.w $1008, X - PLY + PHY + PHX + TYX + LDA.l EndingSequenceText, X + PLX + STA.w $1008, X + PLY RTL ;-------------------------------------------------------------------------------- EndingSequenceTableLookupOverride: - PHX : PHB - PHK : PLB - TYX - LDA.l EndingSequenceText, X : AND.w #$00FF - ASL - TAY - LDA.w FontTable,Y - PLB : PLX + PHX : PHB + PHK : PLB + TYX + LDA.l EndingSequenceText, X : AND.w #$00FF + ASL A + TAY + LDA.w FontTable,Y + PLB : PLX RTL ;-------------------------------------------------------------------------------- diff --git a/stats/statConfig.asm b/stats/statConfig.asm index 1ef49dd..a9785c3 100755 --- a/stats/statConfig.asm +++ b/stats/statConfig.asm @@ -30,8 +30,10 @@ !FAERIE_REVIVALS_Y = 361 !TOTAL_MENU_TIME_X = 19 !TOTAL_MENU_TIME_Y = 364 +!TOTAL_MAP_TIME_X = 19 +!TOTAL_MAP_TIME_Y = 367 !TOTAL_LAG_TIME_X = 19 -!TOTAL_LAG_TIME_Y = 367 +!TOTAL_LAG_TIME_Y = 370 !COLLECTION_RATE_X = 22 !COLLECTION_RATE_Y = 380 !TOTAL_TIME_X = 19 @@ -62,10 +64,10 @@ CreditsStats: %AddStat(SaveQuitCounter, 0, 0, 08, 2, !SAVE_AND_QUITS_X, !SAVE_AND_QUITS_Y) %AddStat(DeathCounter, 0, 0, 08, 2, !DEATHS_X, !DEATHS_Y) %AddStat(FaerieRevivalCounter, 0, 0, 08, 3, !FAERIE_REVIVALS_X, !FAERIE_REVIVALS_Y) -%AddStat(MenuFrames, 1, 8, 32, 4, !TOTAL_MENU_TIME_X, !TOTAL_MENU_TIME_Y) +%AddStat(MenuFrames, 1, 0, 32, 4, !TOTAL_MENU_TIME_X, !TOTAL_MENU_TIME_Y) +%AddStat(MapFrames, 1, 0, 32, 4, !TOTAL_MAP_TIME_X, !TOTAL_MAP_TIME_Y) %AddStat(LagTime, 1, 0, 32, 4, !TOTAL_LAG_TIME_X, !TOTAL_LAG_TIME_Y) print "Collection Rate config: ", pc -warnpc $A39864 %AddStat(TotalItemCounter, 0, 0, 16, 3, !COLLECTION_RATE_X, !COLLECTION_RATE_Y) %AddStat(NMIFrames, 1, 0, 32, 4, !TOTAL_TIME_X, !TOTAL_TIME_Y)