From 7103fac5241ed2dc3dd9d70ee4cbebd7437144b5 Mon Sep 17 00:00:00 2001 From: Randy Thiemann Date: Fri, 10 Nov 2023 11:05:18 +0100 Subject: [PATCH] 10 should be plenty. --- bin/DMGTRIS.GBC | Bin 131072 -> 131072 bytes bin/DMGTRIS.map | 634 +++++++++++++++++++++++++-------------------- bin/DMGTRIS.pocket | Bin 131072 -> 131072 bytes bin/DMGTRIS.sym | 468 +++++++++++++++++++-------------- src/sram.asm | 240 ++++++++++++++--- 5 files changed, 833 insertions(+), 509 deletions(-) diff --git a/bin/DMGTRIS.GBC b/bin/DMGTRIS.GBC index 49ff3898d745e5906bc6e7050758c1d6cf654d99..c7b99b41121522b82dc1bf27c5fb8e43e6e1bde7 100644 GIT binary patch delta 4570 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

=*RB;=hd@qu1L$QM_9TgZDyd37N- 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 ABme*a delta 4203 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 diff --git a/bin/DMGTRIS.sym b/bin/DMGTRIS.sym index d5064f4..dee73f8 100644 --- a/bin/DMGTRIS.sym +++ b/bin/DMGTRIS.sym @@ -201,198 +201,212 @@ 00:20ac UpdateGradeSHIR.disqualify 00:20bb UpdateGradeSHIR.l1000 00:20d1 UpdateGradeSHIR.l500 -00:20e7 LevelInit -00:214c SpecialLevelInit -00:215a SpecialLevelInit.jumps -00:216f SpecialLevelInit.dmgt -00:2174 SpecialLevelInit.tgm1 -00:2179 SpecialLevelInit.tgm3 -00:217e SpecialLevelInit.deat -00:2183 SpecialLevelInit.shir -00:2188 SpecialLevelInit.chil -00:218d SpecialLevelInit.myco -00:2192 SpecialLevelInit.loaddata -00:21c7 LevelUp -00:21f1 LevelUp.doit -00:223b LevelUp.checknlevel -00:228a LevelUp.bellmaybe -00:22a3 LevelUp.leveljinglemaybe -00:22b0 LevelUp.checkspeedup -00:22ef DoSpeedUp -00:2330 CheckSpecialLevelConditions -00:2361 CheckSpecialLevelConditions.override -00:237c CheckSpecialLevelConditions.nooverride -00:2382 CheckSpecialLevelConditions.speciallock -00:23a3 CheckSpecialLevelConditions.bones -00:23b8 CheckSpecialLevelConditions.enterthebonezone -00:23bd CheckSpecialLevelConditions.invis -00:23d2 CheckSpecialLevelConditions.vanishoxyaction -00:23d7 CheckSpecialLevelConditions.killscreen -00:23e8 CheckSpecialLevelConditions.rip -00:2418 CheckSpecialLevelConditions.staffroll -00:2426 CheckSpecialLevelConditions.justkill -00:243a TriggerKillScreen -00:245c sTGM1GradeScores -00:247e sTGM3InternalGradeSystem -00:251e sTGM3GradeBoosts -00:253d sTGM3LevelMultiplier -00:2541 sTGM3BaselineCOOL -00:254a sTGM3REGRETConditions -00:255e sDMGTGrading -00:2612 sDMGTGaugeLUT -00:2712 SFXInit -00:2734 SFXPopQueue -00:2749 SFXPushQueue -00:275a SFXProcessQueue -00:2788 SFXTriggerNoise -00:27ae SFXEnqueue -00:27c3 SFXEnqueue.findsfx -00:291d SFXKill -00:294a SFXPlayNoise -00:2955 SFXPlayNoise.noisereg -00:296c SFXPlayNoise.savenoiseplayhead -00:2975 SFXPlay -00:2983 SFXPlay.play -00:298f SFXPlay.getRegister -00:29a3 SFXPlay.savePlayhead -00:29ac HarvestEntropy -00:29b2 HarvestEntropy.loop -00:29d3 RNGInit -00:2a39 RNGInit.complexinit -00:2a6b ShiftHistory -00:2a88 GetNextHellPiece -00:2a8d GetNextTGM1Piece -00:2aaa GetNextTGM2Piece -00:2ac7 GetNextNesPiece -00:2ad5 GetNextTGM3Piece -00:2b8c GetNextPiece -00:2b9a GetNextPiece.nextpiecejumps -00:2ba9 Next35Piece -00:2bb3 Next7Piece -00:2bbd NextByte -00:2bdd RestoreSRAM -00:2c0d TrustedLoad -00:2c5f TrustedLoad.jumps -00:2c77 TrustedLoad.dmgt -00:2c7d TrustedLoad.tgm1 -00:2c83 TrustedLoad.tgm3 -00:2c89 TrustedLoad.deat -00:2c8f TrustedLoad.shir -00:2c95 TrustedLoad.chil -00:2c9b TrustedLoad.myco -00:2ca1 TrustedLoad.search -00:2cb3 TrustedLoad.notfound -00:2cba TrustedLoad.fallback -00:2cd5 InitializeSRAM -00:2d7e NextProfile -00:2d87 NextProfile.update -00:2d8a ChangeProfile -00:2d8a ChangeProfile.backup -00:2d9d ChangeProfile.first -00:2dab ChangeProfile.second -00:2db9 ChangeProfile.third -00:2dc7 ChangeProfile.restore -00:2dda ChangeProfile.lfirst -00:2de9 ChangeProfile.lsecond -00:2df8 ChangeProfile.lthird -00:2e07 sProgressData -00:2f51 ScoreInit -00:2f79 IncreaseScore -00:2fb1 IncreaseScore.doConvert -00:2fc9 IncreaseScore.carry -00:2fcb IncreaseScore.postConvert -00:2fdf IncreaseScore.preAddDigit -00:3007 IncreaseScore.addDigit -00:301d IncreaseScore.nextDigit -00:3031 InputInit -00:3043 GetInput -00:3043 GetInput.btns -00:3050 GetInput.readA -00:3054 GetInput.setA -00:305f GetInput.clearA -00:3062 GetInput.readB -00:3066 GetInput.setB -00:3071 GetInput.clearB -00:3074 GetInput.readSelect -00:3078 GetInput.setSelect -00:3083 GetInput.clearSelect -00:3086 GetInput.readStart -00:308a GetInput.setStart -00:3095 GetInput.clearStart -00:3098 GetInput.dpad -00:30a5 GetInput.readUp -00:30a9 GetInput.setUp -00:30b4 GetInput.clearUp -00:30b7 GetInput.readDown -00:30bb GetInput.setDown -00:30c6 GetInput.clearDown -00:30c9 GetInput.readLeft -00:30cd GetInput.setLeft -00:30d8 GetInput.clearLeft -00:30db GetInput.readRight -00:30df GetInput.setRight -00:30ea GetInput.clearRight -00:30ed GetInput.priorities -00:30f8 GetInput.zero -00:30fe SwitchToTitle -00:3107 TitleEventLoopHandler -00:3111 TitleVBlankHandler -00:311b PersistLevel -00:3129 DrawSpeedMain -00:3179 DrawSpeedSettings -00:31c9 TimeInit -00:31e9 StartCountdown -00:31f7 ResetGameTime -00:3202 CheckTorikan -00:3219 CheckTorikan.failure -00:321b CheckTorikan.success -00:321e HandleTimers -00:3244 HandleTimers.reduce -00:3251 HandleTimers.clock -00:326b HandleTimers.go -00:328f SetProgress -00:329a SetProgress.loop -00:329e SetProgress.correct -00:32c5 SetProgress.wvr_u1 -00:32d1 SetProgress.wvr_u2 -00:32df SetProgress.wvr_u3 -00:32eb SetProgress.wvr_u4 -00:32f9 SetProgress.wvr_u5 -00:3305 SetProgress.wvr_u6 -00:3313 SetProgress.wvr_u7 -00:331f SetProgress.wvr_u8 -00:332d SetProgress.wvr_u9 -00:3339 SetProgress.wvr_u10 -00:3341 Main -00:336a Main.notgbc -00:3370 Main.wvr_u1 -00:3397 EventLoop -00:33ad EventLoop.eventloopjumps -00:33b6 EventLoopPostHandler -00:33b8 EventLoopPostHandler.wvb_u2 -00:33ca EventLoopPostHandler.vblankjumps -00:33d3 LoadTitleTiles -00:33f1 LoadGameplayTiles -00:3407 LoadGameplayTiles.gbc -00:3416 LoadGameplayTiles.dmg -00:3425 sFramesToCS -00:3461 UnsafeMemCopy -00:346a SafeMemCopy.wvr_u1 -00:346a SafeMemCopy -00:3479 UnsafeMemSet -00:3481 SafeMemSet -00:3481 SafeMemSet.wvr_u2 -00:348f SwitchToGameplay -00:3498 SwitchToGameplayBig -00:34a1 GamePlayEventLoopHandler -00:34ab GamePlayBigEventLoopHandler -00:34b5 EnableScreenSquish -00:34cf DisableScreenSquish -00:34da CopyOAMHandler -00:34e6 ClearOAM -00:34fc BankingInit -00:350b OAMDMA -00:3515 OAMDMAEnd +00:20e7 RestoreSRAM +00:2117 TrustedLoad +00:2169 TrustedLoad.jumps +00:2181 TrustedLoad.dmgt +00:2187 TrustedLoad.tgm1 +00:218d TrustedLoad.tgm3 +00:2193 TrustedLoad.deat +00:2199 TrustedLoad.shir +00:219f TrustedLoad.chil +00:21a5 TrustedLoad.myco +00:21ab TrustedLoad.search +00:21bd TrustedLoad.notfound +00:21c4 TrustedLoad.fallback +00:21df InitializeSRAM +00:22ff NextProfile +00:2308 NextProfile.update +00:230b ChangeProfile +00:230b ChangeProfile.backup +00:233a ChangeProfile.first +00:2348 ChangeProfile.second +00:2356 ChangeProfile.third +00:2364 ChangeProfile.fourth +00:2372 ChangeProfile.fifth +00:2380 ChangeProfile.sixth +00:238e ChangeProfile.seventh +00:239c ChangeProfile.eighth +00:23aa ChangeProfile.ninth +00:23b8 ChangeProfile.tenth +00:23c6 ChangeProfile.restore +00:23f6 ChangeProfile.lfirst +00:2405 ChangeProfile.lsecond +00:2414 ChangeProfile.lthird +00:2423 ChangeProfile.lfourth +00:2432 ChangeProfile.lfifth +00:2441 ChangeProfile.lsixth +00:2450 ChangeProfile.lseventh +00:245f ChangeProfile.leighth +00:246e ChangeProfile.lninth +00:247d ChangeProfile.ltenth +00:248c LevelInit +00:24f1 SpecialLevelInit +00:24ff SpecialLevelInit.jumps +00:2514 SpecialLevelInit.dmgt +00:2519 SpecialLevelInit.tgm1 +00:251e SpecialLevelInit.tgm3 +00:2523 SpecialLevelInit.deat +00:2528 SpecialLevelInit.shir +00:252d SpecialLevelInit.chil +00:2532 SpecialLevelInit.myco +00:2537 SpecialLevelInit.loaddata +00:256c LevelUp +00:2596 LevelUp.doit +00:25e0 LevelUp.checknlevel +00:262f LevelUp.bellmaybe +00:2648 LevelUp.leveljinglemaybe +00:2655 LevelUp.checkspeedup +00:2694 DoSpeedUp +00:26d5 CheckSpecialLevelConditions +00:2706 CheckSpecialLevelConditions.override +00:2721 CheckSpecialLevelConditions.nooverride +00:2727 CheckSpecialLevelConditions.speciallock +00:2748 CheckSpecialLevelConditions.bones +00:275d CheckSpecialLevelConditions.enterthebonezone +00:2762 CheckSpecialLevelConditions.invis +00:2777 CheckSpecialLevelConditions.vanishoxyaction +00:277c CheckSpecialLevelConditions.killscreen +00:278d CheckSpecialLevelConditions.rip +00:27bd CheckSpecialLevelConditions.staffroll +00:27cb CheckSpecialLevelConditions.justkill +00:27df TriggerKillScreen +00:2801 sTGM1GradeScores +00:2823 sTGM3InternalGradeSystem +00:28c3 sTGM3GradeBoosts +00:28e2 sTGM3LevelMultiplier +00:28e6 sTGM3BaselineCOOL +00:28ef sTGM3REGRETConditions +00:2903 sDMGTGrading +00:29b7 sDMGTGaugeLUT +00:2ab7 SFXInit +00:2ad9 SFXPopQueue +00:2aee SFXPushQueue +00:2aff SFXProcessQueue +00:2b2d SFXTriggerNoise +00:2b53 SFXEnqueue +00:2b68 SFXEnqueue.findsfx +00:2cc2 SFXKill +00:2cef SFXPlayNoise +00:2cfa SFXPlayNoise.noisereg +00:2d11 SFXPlayNoise.savenoiseplayhead +00:2d1a SFXPlay +00:2d28 SFXPlay.play +00:2d34 SFXPlay.getRegister +00:2d48 SFXPlay.savePlayhead +00:2d51 HarvestEntropy +00:2d57 HarvestEntropy.loop +00:2d78 RNGInit +00:2dde RNGInit.complexinit +00:2e10 ShiftHistory +00:2e2d GetNextHellPiece +00:2e32 GetNextTGM1Piece +00:2e4f GetNextTGM2Piece +00:2e6c GetNextNesPiece +00:2e7a GetNextTGM3Piece +00:2f31 GetNextPiece +00:2f3f GetNextPiece.nextpiecejumps +00:2f4e Next35Piece +00:2f58 Next7Piece +00:2f62 NextByte +00:2f82 sProgressData +00:30cc ScoreInit +00:30f4 IncreaseScore +00:312c IncreaseScore.doConvert +00:3144 IncreaseScore.carry +00:3146 IncreaseScore.postConvert +00:315a IncreaseScore.preAddDigit +00:3182 IncreaseScore.addDigit +00:3198 IncreaseScore.nextDigit +00:31ac InputInit +00:31be GetInput +00:31be GetInput.btns +00:31cb GetInput.readA +00:31cf GetInput.setA +00:31da GetInput.clearA +00:31dd GetInput.readB +00:31e1 GetInput.setB +00:31ec GetInput.clearB +00:31ef GetInput.readSelect +00:31f3 GetInput.setSelect +00:31fe GetInput.clearSelect +00:3201 GetInput.readStart +00:3205 GetInput.setStart +00:3210 GetInput.clearStart +00:3213 GetInput.dpad +00:3220 GetInput.readUp +00:3224 GetInput.setUp +00:322f GetInput.clearUp +00:3232 GetInput.readDown +00:3236 GetInput.setDown +00:3241 GetInput.clearDown +00:3244 GetInput.readLeft +00:3248 GetInput.setLeft +00:3253 GetInput.clearLeft +00:3256 GetInput.readRight +00:325a GetInput.setRight +00:3265 GetInput.clearRight +00:3268 GetInput.priorities +00:3273 GetInput.zero +00:3279 SwitchToTitle +00:3282 TitleEventLoopHandler +00:328c TitleVBlankHandler +00:3296 PersistLevel +00:32a4 DrawSpeedMain +00:32f4 DrawSpeedSettings +00:3344 TimeInit +00:3364 StartCountdown +00:3372 ResetGameTime +00:337d CheckTorikan +00:3394 CheckTorikan.failure +00:3396 CheckTorikan.success +00:3399 HandleTimers +00:33bf HandleTimers.reduce +00:33cc HandleTimers.clock +00:33e6 HandleTimers.go +00:340a SetProgress +00:3415 SetProgress.loop +00:3419 SetProgress.correct +00:3440 SetProgress.wvr_u1 +00:344c SetProgress.wvr_u2 +00:345a SetProgress.wvr_u3 +00:3466 SetProgress.wvr_u4 +00:3474 SetProgress.wvr_u5 +00:3480 SetProgress.wvr_u6 +00:348e SetProgress.wvr_u7 +00:349a SetProgress.wvr_u8 +00:34a8 SetProgress.wvr_u9 +00:34b4 SetProgress.wvr_u10 +00:34bc Main +00:34e5 Main.notgbc +00:34eb Main.wvr_u1 +00:3512 EventLoop +00:3528 EventLoop.eventloopjumps +00:3531 EventLoopPostHandler +00:3533 EventLoopPostHandler.wvb_u2 +00:3545 EventLoopPostHandler.vblankjumps +00:354e LoadTitleTiles +00:356c LoadGameplayTiles +00:3582 LoadGameplayTiles.gbc +00:3591 LoadGameplayTiles.dmg +00:35a0 sFramesToCS +00:35dc UnsafeMemCopy +00:35e5 SafeMemCopy.wvr_u1 +00:35e5 SafeMemCopy +00:35f4 UnsafeMemSet +00:35fc SafeMemSet +00:35fc SafeMemSet.wvr_u2 +00:360a SwitchToGameplay +00:3613 SwitchToGameplayBig +00:361c GamePlayEventLoopHandler +00:3626 GamePlayBigEventLoopHandler +00:3630 EnableScreenSquish +00:364a DisableScreenSquish +00:3655 CopyOAMHandler +00:3661 ClearOAM +00:3677 BankingInit +00:3686 OAMDMA +00:3690 OAMDMAEnd 01:4008 sDMGTSpeedCurve 01:4203 sDMGTSpeedCurveEnd 01:4205 sDMGTSpeedCurveSpecialData @@ -2181,6 +2195,76 @@ 00:a0cf rAlways20GState2 00:a0d0 rSelectedStartLevel2 00:a0d2 rUnused2 +00:a107 rProfileData3 +00:a107 rProfileName3 +00:a10a rSwapABState3 +00:a10b rRNGModeState3 +00:a10c rRotModeState3 +00:a10d rDropModeState3 +00:a10e rSpeedCurveState3 +00:a10f rAlways20GState3 +00:a110 rSelectedStartLevel3 +00:a112 rUnused3 +00:a147 rProfileData4 +00:a147 rProfileName4 +00:a14a rSwapABState4 +00:a14b rRNGModeState4 +00:a14c rRotModeState4 +00:a14d rDropModeState4 +00:a14e rSpeedCurveState4 +00:a14f rAlways20GState4 +00:a150 rSelectedStartLevel4 +00:a152 rUnused4 +00:a187 rProfileData5 +00:a187 rProfileName5 +00:a18a rSwapABState5 +00:a18b rRNGModeState5 +00:a18c rRotModeState5 +00:a18d rDropModeState5 +00:a18e rSpeedCurveState5 +00:a18f rAlways20GState5 +00:a190 rSelectedStartLevel5 +00:a192 rUnused5 +00:a1c7 rProfileData6 +00:a1c7 rProfileName6 +00:a1ca rSwapABState6 +00:a1cb rRNGModeState6 +00:a1cc rRotModeState6 +00:a1cd rDropModeState6 +00:a1ce rSpeedCurveState6 +00:a1cf rAlways20GState6 +00:a1d0 rSelectedStartLevel6 +00:a1d2 rUnused6 +00:a207 rProfileData7 +00:a207 rProfileName7 +00:a20a rSwapABState7 +00:a20b rRNGModeState7 +00:a20c rRotModeState7 +00:a20d rDropModeState7 +00:a20e rSpeedCurveState7 +00:a20f rAlways20GState7 +00:a210 rSelectedStartLevel7 +00:a212 rUnused7 +00:a247 rProfileData8 +00:a247 rProfileName8 +00:a24a rSwapABState8 +00:a24b rRNGModeState8 +00:a24c rRotModeState8 +00:a24d rDropModeState8 +00:a24e rSpeedCurveState8 +00:a24f rAlways20GState8 +00:a250 rSelectedStartLevel8 +00:a252 rUnused8 +00:a287 rProfileData9 +00:a287 rProfileName9 +00:a28a rSwapABState9 +00:a28b rRNGModeState9 +00:a28c rRotModeState9 +00:a28d rDropModeState9 +00:a28e rSpeedCurveState9 +00:a28f rAlways20GState9 +00:a290 rSelectedStartLevel9 +00:a292 rUnused9 00:c000 wShadowTilemap 00:c400 wShadowTileAttrs 00:c800 wShadowOAM diff --git a/src/sram.asm b/src/sram.asm index bb27dca..1b262d7 100644 --- a/src/sram.asm +++ b/src/sram.asm @@ -22,6 +22,23 @@ DEF SRAM_ASM EQU 1 INCLUDE "globals.asm" +MACRO PROFILE +UNION +rProfileData\1:: ds 64 +NEXTU +rProfileName\1:: ds 3 +rSwapABState\1:: ds 1 +rRNGModeState\1:: ds 1 +rRotModeState\1:: ds 1 +rDropModeState\1:: ds 1 +rSpeedCurveState\1:: ds 1 +rAlways20GState\1:: ds 1 +rSelectedStartLevel\1:: ds 2 +rUnused\1:: ds (64-11) +ENDU +ENDM + + SECTION "Persistent Globals", SRAM rCheck:: ds 6 rLastProfile:: ds 1 @@ -38,45 +55,16 @@ rAlways20GState:: ds 1 rSelectedStartLevel:: ds 2 rUnused:: ds (64-11) ENDU -UNION -rProfileData0:: ds 64 -NEXTU -rProfileName0:: ds 3 -rSwapABState0:: ds 1 -rRNGModeState0:: ds 1 -rRotModeState0:: ds 1 -rDropModeState0:: ds 1 -rSpeedCurveState0:: ds 1 -rAlways20GState0:: ds 1 -rSelectedStartLevel0:: ds 2 -rUnused0:: ds (64-11) -ENDU -UNION -rProfileData1:: ds 64 -NEXTU -rProfileName1:: ds 3 -rSwapABState1:: ds 1 -rRNGModeState1:: ds 1 -rRotModeState1:: ds 1 -rDropModeState1:: ds 1 -rSpeedCurveState1:: ds 1 -rAlways20GState1:: ds 1 -rSelectedStartLevel1:: ds 2 -rUnused1:: ds (64-11) -ENDU -UNION -rProfileData2:: ds 64 -NEXTU -rProfileName2:: ds 3 -rSwapABState2:: ds 1 -rRNGModeState2:: ds 1 -rRotModeState2:: ds 1 -rDropModeState2:: ds 1 -rSpeedCurveState2:: ds 1 -rAlways20GState2:: ds 1 -rSelectedStartLevel2:: ds 2 -rUnused2:: ds (64-11) -ENDU + PROFILE 0 + PROFILE 1 + PROFILE 2 + PROFILE 3 + PROFILE 4 + PROFILE 5 + PROFILE 6 + PROFILE 7 + PROFILE 8 + PROFILE 9 SECTION "SRAM Variables", WRAM0 wTarget:: ds 1 @@ -102,7 +90,7 @@ RestoreSRAM:: cp a, 0 jp nz, InitializeSRAM ld a, [rCheck+5] - cp a, 0 + cp a, 1 jp nz, InitializeSRAM ; SRAM is initialized and for this build, so we can load the data. @@ -232,7 +220,7 @@ InitializeSRAM: ld [rCheck+3], a ld a, 0 ld [rCheck+4], a - ld a, 0 + ld a, 1 ld [rCheck+5], a xor a, a @@ -297,16 +285,58 @@ InitializeSRAM: ld de, rProfileData ld bc, 64 call UnsafeMemCopy + ld hl, rProfileData3 + ld de, rProfileData + ld bc, 64 + call UnsafeMemCopy + ld hl, rProfileData4 + ld de, rProfileData + ld bc, 64 + call UnsafeMemCopy + ld hl, rProfileData5 + ld de, rProfileData + ld bc, 64 + call UnsafeMemCopy + ld hl, rProfileData6 + ld de, rProfileData + ld bc, 64 + call UnsafeMemCopy + ld hl, rProfileData7 + ld de, rProfileData + ld bc, 64 + call UnsafeMemCopy + ld hl, rProfileData8 + ld de, rProfileData + ld bc, 64 + call UnsafeMemCopy + ld hl, rProfileData9 + ld de, rProfileData + ld bc, 64 + call UnsafeMemCopy ld a, "1" ld [rProfileName1+2], a ld a, "2" ld [rProfileName2+2], a + ld a, "3" + ld [rProfileName3+2], a + ld a, "4" + ld [rProfileName4+2], a + ld a, "5" + ld [rProfileName5+2], a + ld a, "6" + ld [rProfileName6+2], a + ld a, "7" + ld [rProfileName7+2], a + ld a, "8" + ld [rProfileName8+2], a + ld a, "9" + ld [rProfileName9+2], a ret NextProfile:: ld a, [rLastProfile] inc a - cp a, 3 + cp a, 10 jr nz, .update xor a, a .update @@ -323,6 +353,20 @@ ChangeProfile:: jr z, .second cp a, 2 jr z, .third + cp a, 3 + jr z, .fourth + cp a, 4 + jr z, .fifth + cp a, 5 + jr z, .sixth + cp a, 6 + jr z, .seventh + cp a, 7 + jr z, .eighth + cp a, 8 + jr z, .ninth + cp a, 9 + jr z, .tenth ret .first @@ -346,6 +390,55 @@ ChangeProfile:: call UnsafeMemCopy jr .restore +.fourth + ld hl, rProfileData3 + ld de, rProfileData + ld bc, 64 + call UnsafeMemCopy + jr .restore + +.fifth + ld hl, rProfileData4 + ld de, rProfileData + ld bc, 64 + call UnsafeMemCopy + jr .restore + +.sixth + ld hl, rProfileData5 + ld de, rProfileData + ld bc, 64 + call UnsafeMemCopy + jr .restore + +.seventh + ld hl, rProfileData6 + ld de, rProfileData + ld bc, 64 + call UnsafeMemCopy + jr .restore + +.eighth + ld hl, rProfileData7 + ld de, rProfileData + ld bc, 64 + call UnsafeMemCopy + jr .restore + +.ninth + ld hl, rProfileData8 + ld de, rProfileData + ld bc, 64 + call UnsafeMemCopy + jr .restore + +.tenth + ld hl, rProfileData9 + ld de, rProfileData + ld bc, 64 + call UnsafeMemCopy + jr .restore + .restore ld a, [wTarget] ld [rLastProfile], a @@ -355,6 +448,20 @@ ChangeProfile:: jr z, .lsecond cp a, 2 jr z, .lthird + cp a, 3 + jr z, .lfourth + cp a, 4 + jr z, .lfifth + cp a, 5 + jr z, .lsixth + cp a, 6 + jr z, .lseventh + cp a, 7 + jr z, .leighth + cp a, 8 + jr z, .lninth + cp a, 9 + jp z, .ltenth ret .lfirst @@ -378,5 +485,54 @@ ChangeProfile:: call UnsafeMemCopy jp TrustedLoad +.lfourth + ld hl, rProfileData + ld de, rProfileData3 + ld bc, 64 + call UnsafeMemCopy + jp TrustedLoad + +.lfifth + ld hl, rProfileData + ld de, rProfileData4 + ld bc, 64 + call UnsafeMemCopy + jp TrustedLoad + +.lsixth + ld hl, rProfileData + ld de, rProfileData5 + ld bc, 64 + call UnsafeMemCopy + jp TrustedLoad + +.lseventh + ld hl, rProfileData + ld de, rProfileData6 + ld bc, 64 + call UnsafeMemCopy + jp TrustedLoad + +.leighth + ld hl, rProfileData + ld de, rProfileData7 + ld bc, 64 + call UnsafeMemCopy + jp TrustedLoad + +.lninth + ld hl, rProfileData + ld de, rProfileData8 + ld bc, 64 + call UnsafeMemCopy + jp TrustedLoad + +.ltenth + ld hl, rProfileData + ld de, rProfileData9 + ld bc, 64 + call UnsafeMemCopy + jp TrustedLoad + ENDC