RNG Improvement

This commit is contained in:
Randy Thiemann 2023-11-07 05:30:03 +01:00
parent b387bcebc2
commit 32d09d59e0
6 changed files with 330 additions and 289 deletions

Binary file not shown.

View File

@ -274,172 +274,173 @@ ROM0 bank #0:
$2394 = SFXPlay.getRegister $2394 = SFXPlay.getRegister
$239e = !26 $239e = !26
$23a8 = SFXPlay.savePlayhead $23a8 = SFXPlay.savePlayhead
SECTION: $23b1-$25a5 ($01f5 bytes) ["RNG Functions"] SECTION: $23b1-$25cf ($021f bytes) ["RNG Functions"]
$23b1 = HarvestEntropy $23b1 = HarvestEntropy
$23b2 = RNGInit $23b7 = HarvestEntropy.loop
$23e8 = !0 $23dc = RNGInit
$2403 = RNGInit.complexinit $2412 = !0
$241a = !1 $242d = RNGInit.complexinit
$2434 = ShiftHistory $2444 = !1
$2451 = GetNextHellPiece $245e = ShiftHistory
$2456 = GetNextTGM1Piece $247b = GetNextHellPiece
$2459 = !2 $2480 = GetNextTGM1Piece
$2471 = !3 $2483 = !2
$2473 = GetNextTGM2Piece $249b = !3
$2476 = !4 $249d = GetNextTGM2Piece
$248e = !5 $24a0 = !4
$2490 = GetNextNesPiece $24b8 = !5
$249e = GetNextTGM3Piece $24ba = GetNextNesPiece
$24a1 = !6 $24c8 = GetNextTGM3Piece
$24c4 = !7 $24cb = !6
$24c7 = !8 $24ee = !7
$24d7 = !9 $24f1 = !8
$24e1 = !10 $2501 = !9
$24ef = !11 $250b = !10
$24fe = !12 $2519 = !11
$250a = !13 $2528 = !12
$2516 = !14 $2534 = !13
$2522 = !15 $2540 = !14
$252e = !16 $254c = !15
$253a = !17 $2558 = !16
$2546 = !18 $2564 = !17
$2555 = GetNextPiece $2570 = !18
$2563 = GetNextPiece.nextpiecejumps $257f = GetNextPiece
$2572 = Next35Piece $258d = GetNextPiece.nextpiecejumps
$2572 = !19 $259c = Next35Piece
$257c = Next7Piece $259c = !19
$257c = !20 $25a6 = Next7Piece
$2586 = NextByte $25a6 = !20
SECTION: $25a6-$2748 ($01a3 bytes) ["Level Functions"] $25b0 = NextByte
$25a6 = LevelInit SECTION: $25d0-$2772 ($01a3 bytes) ["Level Functions"]
$25f6 = LevelUp $25d0 = LevelInit
$261a = LevelUp.doit $2620 = LevelUp
$265e = LevelUp.checknlevel $2644 = LevelUp.doit
$268c = !0 $2688 = LevelUp.checknlevel
$26a4 = !1 $26b6 = !0
$26ad = LevelUp.bellmaybe $26ce = !1
$26bf = LevelUp.leveljinglemaybe $26d7 = LevelUp.bellmaybe
$26cc = LevelUp.checkspeedup $26e9 = LevelUp.leveljinglemaybe
$26dd = !2 $26f6 = LevelUp.checkspeedup
$26ea = !3 $2707 = !2
$26fb = !4 $2714 = !3
$2708 = DoSpeedUp $2725 = !4
SECTION: $2749-$2892 ($014a bytes) ["Progress Data"] $2732 = DoSpeedUp
$2749 = sProgressData SECTION: $2773-$28bc ($014a bytes) ["Progress Data"]
SECTION: $2893-$2972 ($00e0 bytes) ["Score Functions"] $2773 = sProgressData
$2893 = ScoreInit SECTION: $28bd-$299c ($00e0 bytes) ["Score Functions"]
$28bb = IncreaseScore $28bd = ScoreInit
$28f3 = IncreaseScore.doConvert $28e5 = IncreaseScore
$28f5 = !0 $291d = IncreaseScore.doConvert
$290b = IncreaseScore.carry $291f = !0
$290d = IncreaseScore.postConvert $2935 = IncreaseScore.carry
$291a = !1 $2937 = IncreaseScore.postConvert
$2921 = IncreaseScore.preAddDigit $2944 = !1
$2949 = IncreaseScore.addDigit $294b = IncreaseScore.preAddDigit
$295f = IncreaseScore.nextDigit $2973 = IncreaseScore.addDigit
SECTION: $2973-$2a3f ($00cd bytes) ["Input Functions"] $2989 = IncreaseScore.nextDigit
$2973 = InputInit SECTION: $299d-$2a69 ($00cd bytes) ["Input Functions"]
$2985 = GetInput $299d = InputInit
$2985 = GetInput.btns $29af = GetInput
$2992 = GetInput.readA $29af = GetInput.btns
$2996 = GetInput.setA $29bc = GetInput.readA
$29a1 = GetInput.clearA $29c0 = GetInput.setA
$29a4 = GetInput.readB $29cb = GetInput.clearA
$29a8 = GetInput.setB $29ce = GetInput.readB
$29b3 = GetInput.clearB $29d2 = GetInput.setB
$29b6 = GetInput.readSelect $29dd = GetInput.clearB
$29ba = GetInput.setSelect $29e0 = GetInput.readSelect
$29c5 = GetInput.clearSelect $29e4 = GetInput.setSelect
$29c8 = GetInput.readStart $29ef = GetInput.clearSelect
$29cc = GetInput.setStart $29f2 = GetInput.readStart
$29d7 = GetInput.clearStart $29f6 = GetInput.setStart
$29da = GetInput.dpad $2a01 = GetInput.clearStart
$29e7 = GetInput.readUp $2a04 = GetInput.dpad
$29eb = GetInput.setUp $2a11 = GetInput.readUp
$29f6 = GetInput.clearUp $2a15 = GetInput.setUp
$29f9 = GetInput.readDown $2a20 = GetInput.clearUp
$29fd = GetInput.setDown $2a23 = GetInput.readDown
$2a08 = GetInput.clearDown $2a27 = GetInput.setDown
$2a0b = GetInput.readLeft $2a32 = GetInput.clearDown
$2a0f = GetInput.setLeft $2a35 = GetInput.readLeft
$2a1a = GetInput.clearLeft $2a39 = GetInput.setLeft
$2a1d = GetInput.readRight $2a44 = GetInput.clearLeft
$2a21 = GetInput.setRight $2a47 = GetInput.readRight
$2a2c = GetInput.clearRight $2a4b = GetInput.setRight
$2a2f = GetInput.priorities $2a56 = GetInput.clearRight
$2a3a = GetInput.zero $2a59 = GetInput.priorities
SECTION: $2a40-$2af6 ($00b7 bytes) ["SRAM Functions"] $2a64 = GetInput.zero
$2a40 = RestoreSRAM SECTION: $2a6a-$2b20 ($00b7 bytes) ["SRAM Functions"]
$2a99 = InitializeSRAM $2a6a = RestoreSRAM
SECTION: $2af7-$2ba8 ($00b2 bytes) ["Progress Functions"] $2ac3 = InitializeSRAM
$2af7 = SetProgress SECTION: $2b21-$2bd2 ($00b2 bytes) ["Progress Functions"]
$2b02 = SetProgress.loop $2b21 = SetProgress
$2b06 = SetProgress.correct $2b2c = SetProgress.loop
$2b2d = SetProgress.wvr_u1 $2b30 = SetProgress.correct
$2b39 = SetProgress.wvr_u2 $2b57 = SetProgress.wvr_u1
$2b47 = SetProgress.wvr_u3 $2b63 = SetProgress.wvr_u2
$2b53 = SetProgress.wvr_u4 $2b71 = SetProgress.wvr_u3
$2b61 = SetProgress.wvr_u5 $2b7d = SetProgress.wvr_u4
$2b6d = SetProgress.wvr_u6 $2b8b = SetProgress.wvr_u5
$2b7b = SetProgress.wvr_u7 $2b97 = SetProgress.wvr_u6
$2b87 = SetProgress.wvr_u8 $2ba5 = SetProgress.wvr_u7
$2b95 = SetProgress.wvr_u9 $2bb1 = SetProgress.wvr_u8
$2ba1 = SetProgress.wvr_u10 $2bbf = SetProgress.wvr_u9
SECTION: $2ba9-$2c4c ($00a4 bytes) ["Code Entry Point"] $2bcb = SetProgress.wvr_u10
$2ba9 = Main SECTION: $2bd3-$2c79 ($00a7 bytes) ["Code Entry Point"]
$2bbe = Main.wvr_u1 $2bd3 = Main
$2bc7 = !0 $2bf9 = Main.wvr_u1
$2bd7 = Main.notgbc $2c02 = !0
$2c06 = Main.wvb_u2 $2c12 = Main.notgbc
$2c0b = !1 $2c33 = Main.wvb_u2
$2c11 = EventLoop $2c38 = !1
$2c27 = EventLoop.eventloopjumps $2c3e = EventLoop
$2c30 = EventLoopPostHandler $2c54 = EventLoop.eventloopjumps
$2c32 = EventLoopPostHandler.wvb_u3 $2c5d = EventLoopPostHandler
$2c44 = EventLoopPostHandler.vblankjumps $2c5f = EventLoopPostHandler.wvb_u3
SECTION: $2c4d-$2cd4 ($0088 bytes) ["Time Functions"] $2c71 = EventLoopPostHandler.vblankjumps
$2c4d = TimeInit SECTION: $2c7a-$2d01 ($0088 bytes) ["Time Functions"]
$2c62 = ResetGameTime $2c7a = TimeInit
$2c6d = CheckTorikan $2c8f = ResetGameTime
$2c84 = CheckTorikan.failure $2c9a = CheckTorikan
$2c86 = CheckTorikan.success $2cb1 = CheckTorikan.failure
$2c89 = HandleTimers $2cb3 = CheckTorikan.success
$2cb1 = HandleTimers.go $2cb6 = HandleTimers
SECTION: $2cd5-$2d42 ($006e bytes) ["Title Function Trampolines"] $2cde = HandleTimers.go
$2cd5 = SwitchToTitle SECTION: $2d02-$2d6f ($006e bytes) ["Title Function Trampolines"]
$2cdf = TitleEventLoopHandler $2d02 = SwitchToTitle
$2ce9 = TitleVBlankHandler $2d0c = TitleEventLoopHandler
$2cf3 = DrawOption6 $2d16 = TitleVBlankHandler
SECTION: $2d43-$2d94 ($0052 bytes) ["Tile Functions"] $2d20 = DrawOption6
$2d43 = LoadTitleTiles SECTION: $2d70-$2dc1 ($0052 bytes) ["Tile Functions"]
$2d61 = LoadGameplayTiles $2d70 = LoadTitleTiles
$2d77 = LoadGameplayTiles.gbc $2d8e = LoadGameplayTiles
$2d86 = LoadGameplayTiles.dmg $2da4 = LoadGameplayTiles.gbc
SECTION: $2d95-$2dd0 ($003c bytes) ["Time Data"] $2db3 = LoadGameplayTiles.dmg
$2d95 = sFramesToCS SECTION: $2dc2-$2dfd ($003c bytes) ["Time Data"]
SECTION: $2dd1-$2dfe ($002e bytes) ["Memory Functions"] $2dc2 = sFramesToCS
$2dd1 = UnsafeMemCopy SECTION: $2dfe-$2e2b ($002e bytes) ["Memory Functions"]
$2dda = SafeMemCopy.wvr_u1 $2dfe = UnsafeMemCopy
$2dda = SafeMemCopy $2e07 = SafeMemCopy.wvr_u1
$2de9 = UnsafeMemSet $2e07 = SafeMemCopy
$2df1 = SafeMemSet $2e16 = UnsafeMemSet
$2df1 = SafeMemSet.wvr_u2 $2e1e = SafeMemSet
SECTION: $2dff-$2e26 ($0028 bytes) ["Gameplay Function Trampolines"] $2e1e = SafeMemSet.wvr_u2
$2dff = SwitchToGameplay SECTION: $2e2c-$2e53 ($0028 bytes) ["Gameplay Function Trampolines"]
$2e09 = SwitchToGameplayBig $2e2c = SwitchToGameplay
$2e13 = GamePlayEventLoopHandler $2e36 = SwitchToGameplayBig
$2e1d = GamePlayBigEventLoopHandler $2e40 = GamePlayEventLoopHandler
SECTION: $2e27-$2e48 ($0022 bytes) ["OAM Functions"] $2e4a = GamePlayBigEventLoopHandler
$2e27 = CopyOAMHandler SECTION: $2e54-$2e75 ($0022 bytes) ["OAM Functions"]
$2e33 = ClearOAM $2e54 = CopyOAMHandler
SECTION: $2e49-$2e61 ($0019 bytes) ["Interrupt Initialization Functions"] $2e60 = ClearOAM
$2e49 = IntrInit SECTION: $2e76-$2e8e ($0019 bytes) ["Interrupt Initialization Functions"]
$2e4d = InitializeLCDCInterrupt $2e76 = IntrInit
SECTION: $2e62-$2e6b ($000a bytes) ["OAM DMA Code"] $2e7a = InitializeLCDCInterrupt
$2e62 = OAMDMA SECTION: $2e8f-$2e98 ($000a bytes) ["OAM DMA Code"]
$2e6c = OAMDMAEnd $2e8f = OAMDMA
EMPTY: $2e6c-$3fff ($1194 bytes) $2e99 = OAMDMAEnd
TOTAL EMPTY: $119f bytes EMPTY: $2e99-$3fff ($1167 bytes)
TOTAL EMPTY: $1172 bytes
ROMX bank #1: ROMX bank #1:
SECTION: $4000-$4007 ($0008 bytes) ["Bank ID BANK_OTHER"] SECTION: $4000-$4007 ($0008 bytes) ["Bank ID BANK_OTHER"]
@ -2464,7 +2465,7 @@ HRAM bank #0:
TOTAL EMPTY: $0003 bytes TOTAL EMPTY: $0003 bytes
SUMMARY: SUMMARY:
ROM0: 11873 bytes used / 4511 free ROM0: 11918 bytes used / 4466 free
ROMX: 56523 bytes used / 41781 free in 6 banks ROMX: 56523 bytes used / 41781 free in 6 banks
SRAM: 14 bytes used / 8178 free in 1 bank SRAM: 14 bytes used / 8178 free in 1 bank
WRAM0: 3515 bytes used / 581 free WRAM0: 3515 bytes used / 581 free

Binary file not shown.

View File

@ -210,122 +210,123 @@
00:2394 SFXPlay.getRegister 00:2394 SFXPlay.getRegister
00:23a8 SFXPlay.savePlayhead 00:23a8 SFXPlay.savePlayhead
00:23b1 HarvestEntropy 00:23b1 HarvestEntropy
00:23b2 RNGInit 00:23b7 HarvestEntropy.loop
00:2403 RNGInit.complexinit 00:23dc RNGInit
00:2434 ShiftHistory 00:242d RNGInit.complexinit
00:2451 GetNextHellPiece 00:245e ShiftHistory
00:2456 GetNextTGM1Piece 00:247b GetNextHellPiece
00:2473 GetNextTGM2Piece 00:2480 GetNextTGM1Piece
00:2490 GetNextNesPiece 00:249d GetNextTGM2Piece
00:249e GetNextTGM3Piece 00:24ba GetNextNesPiece
00:2555 GetNextPiece 00:24c8 GetNextTGM3Piece
00:2563 GetNextPiece.nextpiecejumps 00:257f GetNextPiece
00:2572 Next35Piece 00:258d GetNextPiece.nextpiecejumps
00:257c Next7Piece 00:259c Next35Piece
00:2586 NextByte 00:25a6 Next7Piece
00:25a6 LevelInit 00:25b0 NextByte
00:25f6 LevelUp 00:25d0 LevelInit
00:261a LevelUp.doit 00:2620 LevelUp
00:265e LevelUp.checknlevel 00:2644 LevelUp.doit
00:26ad LevelUp.bellmaybe 00:2688 LevelUp.checknlevel
00:26bf LevelUp.leveljinglemaybe 00:26d7 LevelUp.bellmaybe
00:26cc LevelUp.checkspeedup 00:26e9 LevelUp.leveljinglemaybe
00:2708 DoSpeedUp 00:26f6 LevelUp.checkspeedup
00:2749 sProgressData 00:2732 DoSpeedUp
00:2893 ScoreInit 00:2773 sProgressData
00:28bb IncreaseScore 00:28bd ScoreInit
00:28f3 IncreaseScore.doConvert 00:28e5 IncreaseScore
00:290b IncreaseScore.carry 00:291d IncreaseScore.doConvert
00:290d IncreaseScore.postConvert 00:2935 IncreaseScore.carry
00:2921 IncreaseScore.preAddDigit 00:2937 IncreaseScore.postConvert
00:2949 IncreaseScore.addDigit 00:294b IncreaseScore.preAddDigit
00:295f IncreaseScore.nextDigit 00:2973 IncreaseScore.addDigit
00:2973 InputInit 00:2989 IncreaseScore.nextDigit
00:2985 GetInput 00:299d InputInit
00:2985 GetInput.btns 00:29af GetInput
00:2992 GetInput.readA 00:29af GetInput.btns
00:2996 GetInput.setA 00:29bc GetInput.readA
00:29a1 GetInput.clearA 00:29c0 GetInput.setA
00:29a4 GetInput.readB 00:29cb GetInput.clearA
00:29a8 GetInput.setB 00:29ce GetInput.readB
00:29b3 GetInput.clearB 00:29d2 GetInput.setB
00:29b6 GetInput.readSelect 00:29dd GetInput.clearB
00:29ba GetInput.setSelect 00:29e0 GetInput.readSelect
00:29c5 GetInput.clearSelect 00:29e4 GetInput.setSelect
00:29c8 GetInput.readStart 00:29ef GetInput.clearSelect
00:29cc GetInput.setStart 00:29f2 GetInput.readStart
00:29d7 GetInput.clearStart 00:29f6 GetInput.setStart
00:29da GetInput.dpad 00:2a01 GetInput.clearStart
00:29e7 GetInput.readUp 00:2a04 GetInput.dpad
00:29eb GetInput.setUp 00:2a11 GetInput.readUp
00:29f6 GetInput.clearUp 00:2a15 GetInput.setUp
00:29f9 GetInput.readDown 00:2a20 GetInput.clearUp
00:29fd GetInput.setDown 00:2a23 GetInput.readDown
00:2a08 GetInput.clearDown 00:2a27 GetInput.setDown
00:2a0b GetInput.readLeft 00:2a32 GetInput.clearDown
00:2a0f GetInput.setLeft 00:2a35 GetInput.readLeft
00:2a1a GetInput.clearLeft 00:2a39 GetInput.setLeft
00:2a1d GetInput.readRight 00:2a44 GetInput.clearLeft
00:2a21 GetInput.setRight 00:2a47 GetInput.readRight
00:2a2c GetInput.clearRight 00:2a4b GetInput.setRight
00:2a2f GetInput.priorities 00:2a56 GetInput.clearRight
00:2a3a GetInput.zero 00:2a59 GetInput.priorities
00:2a40 RestoreSRAM 00:2a64 GetInput.zero
00:2a99 InitializeSRAM 00:2a6a RestoreSRAM
00:2af7 SetProgress 00:2ac3 InitializeSRAM
00:2b02 SetProgress.loop 00:2b21 SetProgress
00:2b06 SetProgress.correct 00:2b2c SetProgress.loop
00:2b2d SetProgress.wvr_u1 00:2b30 SetProgress.correct
00:2b39 SetProgress.wvr_u2 00:2b57 SetProgress.wvr_u1
00:2b47 SetProgress.wvr_u3 00:2b63 SetProgress.wvr_u2
00:2b53 SetProgress.wvr_u4 00:2b71 SetProgress.wvr_u3
00:2b61 SetProgress.wvr_u5 00:2b7d SetProgress.wvr_u4
00:2b6d SetProgress.wvr_u6 00:2b8b SetProgress.wvr_u5
00:2b7b SetProgress.wvr_u7 00:2b97 SetProgress.wvr_u6
00:2b87 SetProgress.wvr_u8 00:2ba5 SetProgress.wvr_u7
00:2b95 SetProgress.wvr_u9 00:2bb1 SetProgress.wvr_u8
00:2ba1 SetProgress.wvr_u10 00:2bbf SetProgress.wvr_u9
00:2ba9 Main 00:2bcb SetProgress.wvr_u10
00:2bbe Main.wvr_u1 00:2bd3 Main
00:2bd7 Main.notgbc 00:2bf9 Main.wvr_u1
00:2c06 Main.wvb_u2 00:2c12 Main.notgbc
00:2c11 EventLoop 00:2c33 Main.wvb_u2
00:2c27 EventLoop.eventloopjumps 00:2c3e EventLoop
00:2c30 EventLoopPostHandler 00:2c54 EventLoop.eventloopjumps
00:2c32 EventLoopPostHandler.wvb_u3 00:2c5d EventLoopPostHandler
00:2c44 EventLoopPostHandler.vblankjumps 00:2c5f EventLoopPostHandler.wvb_u3
00:2c4d TimeInit 00:2c71 EventLoopPostHandler.vblankjumps
00:2c62 ResetGameTime 00:2c7a TimeInit
00:2c6d CheckTorikan 00:2c8f ResetGameTime
00:2c84 CheckTorikan.failure 00:2c9a CheckTorikan
00:2c86 CheckTorikan.success 00:2cb1 CheckTorikan.failure
00:2c89 HandleTimers 00:2cb3 CheckTorikan.success
00:2cb1 HandleTimers.go 00:2cb6 HandleTimers
00:2cd5 SwitchToTitle 00:2cde HandleTimers.go
00:2cdf TitleEventLoopHandler 00:2d02 SwitchToTitle
00:2ce9 TitleVBlankHandler 00:2d0c TitleEventLoopHandler
00:2cf3 DrawOption6 00:2d16 TitleVBlankHandler
00:2d43 LoadTitleTiles 00:2d20 DrawOption6
00:2d61 LoadGameplayTiles 00:2d70 LoadTitleTiles
00:2d77 LoadGameplayTiles.gbc 00:2d8e LoadGameplayTiles
00:2d86 LoadGameplayTiles.dmg 00:2da4 LoadGameplayTiles.gbc
00:2d95 sFramesToCS 00:2db3 LoadGameplayTiles.dmg
00:2dd1 UnsafeMemCopy 00:2dc2 sFramesToCS
00:2dda SafeMemCopy.wvr_u1 00:2dfe UnsafeMemCopy
00:2dda SafeMemCopy 00:2e07 SafeMemCopy.wvr_u1
00:2de9 UnsafeMemSet 00:2e07 SafeMemCopy
00:2df1 SafeMemSet 00:2e16 UnsafeMemSet
00:2df1 SafeMemSet.wvr_u2 00:2e1e SafeMemSet
00:2dff SwitchToGameplay 00:2e1e SafeMemSet.wvr_u2
00:2e09 SwitchToGameplayBig 00:2e2c SwitchToGameplay
00:2e13 GamePlayEventLoopHandler 00:2e36 SwitchToGameplayBig
00:2e1d GamePlayBigEventLoopHandler 00:2e40 GamePlayEventLoopHandler
00:2e27 CopyOAMHandler 00:2e4a GamePlayBigEventLoopHandler
00:2e33 ClearOAM 00:2e54 CopyOAMHandler
00:2e49 IntrInit 00:2e60 ClearOAM
00:2e4d InitializeLCDCInterrupt 00:2e76 IntrInit
00:2e62 OAMDMA 00:2e7a InitializeLCDCInterrupt
00:2e6c OAMDMAEnd 00:2e8f OAMDMA
00:2e99 OAMDMAEnd
01:4008 sDMGTSpeedCurve 01:4008 sDMGTSpeedCurve
01:4210 sDMGTSpeedCurveEnd 01:4210 sDMGTSpeedCurveEnd
01:4212 sTGM1SpeedCurve 01:4212 sTGM1SpeedCurve

View File

@ -55,6 +55,17 @@ Main::
ld a, c ld a, c
ld [wInitialC], a ld [wInitialC], a
; Initialize the mapper.
ld a, CART_SRAM_ENABLE
ld [rRAMG], a
xor a, a
ld [rRAMB], a
ld a, BANK_OTHER
ld [rROMB0], a
; Harvest entropy
call HarvestEntropy
; Let the DMG have some fun with the initial screen. ; Let the DMG have some fun with the initial screen.
call DoDMGEffect call DoDMGEffect
@ -78,13 +89,6 @@ Main::
ldh [rKEY1], a ldh [rKEY1], a
stop stop
.notgbc .notgbc
; Initialize the mapper.
ld a, CART_SRAM_ENABLE
ld [rRAMG], a
xor a, a
ld [rRAMB], a
ld a, BANK_OTHER
ld [rROMB0], a
; Clear OAM. ; Clear OAM.
call ClearOAM call ClearOAM

View File

@ -39,6 +39,41 @@ wTGM3WorstDroughtIdx: ds 1
section "RNG Functions", ROM0 section "RNG Functions", ROM0
HarvestEntropy:: HarvestEntropy::
ld hl, $D000
ld de, $E000
.loop
ldh a, [hRNGSeed]
xor a, [hl]
ldh [hRNGSeed], a
xor a, a
ld [hl+], a
ldh a, [hRNGSeed+1]
xor a, [hl]
ldh [hRNGSeed+1], a
xor a, a
ld [hl+], a
ldh a, [hRNGSeed+2]
xor a, [hl]
ldh [hRNGSeed+2], a
xor a, a
ld [hl+], a
ldh a, [hRNGSeed+3]
xor a, [hl]
ldh [hRNGSeed+3], a
xor a, a
ld [hl+], a
ld a, h
cp a, d
jr nz, .loop
ld a, l
cp a, e
jr nz, .loop
ret ret
; Snapshots the initial seed for a game, then initializes the history and piece queue. ; Snapshots the initial seed for a game, then initializes the history and piece queue.