Decoupled release.
This commit is contained in:
parent
246b760bfb
commit
3576cb9bc6
BIN
DMGTRIS.GB
BIN
DMGTRIS.GB
Binary file not shown.
47
README.md
47
README.md
|
@ -6,7 +6,7 @@ The game is heavily inspired by the TGM series of games and has the following fe
|
||||||
- IRS (initial rotation system).
|
- IRS (initial rotation system).
|
||||||
- IHS (initial hold system) as well as holds.
|
- IHS (initial hold system) as well as holds.
|
||||||
- Faithful implementations of concepts such are lock delay, piece spawn delay and DAS.
|
- Faithful implementations of concepts such are lock delay, piece spawn delay and DAS.
|
||||||
- Several RNG options available. You can choose between pure RNG, 4 history with 4 retries, 4 history with 6 retries, 4 history with infinite retries, or a 35bag with 4 history and 6 retries with drought prevention.
|
- Several RNG options available. You can choose between pure RNG, 4 history with 4 retries, 4 history with 6 retries, 4 history with infinite retries, a 35bag with 4 history and 6 retries with drought prevention, NES style RNG, or pure RNG.
|
||||||
- A choice between sonic drop (pressing up grounds the piece but does not lock it), hard drop (pressing up locks the piece), or neither (pressing up does nothing at all.)
|
- A choice between sonic drop (pressing up grounds the piece but does not lock it), hard drop (pressing up locks the piece), or neither (pressing up does nothing at all.)
|
||||||
- A choice between traditional ARS for rotation, or TGM3 era ARS with extra kicks.
|
- A choice between traditional ARS for rotation, or TGM3 era ARS with extra kicks.
|
||||||
- Scoring is a hybrid between TGM1 and TGM2.
|
- Scoring is a hybrid between TGM1 and TGM2.
|
||||||
|
@ -14,16 +14,34 @@ The game is heavily inspired by the TGM series of games and has the following fe
|
||||||
- A rock solid 60FPS with a traditional 20x10 grid.
|
- A rock solid 60FPS with a traditional 20x10 grid.
|
||||||
|
|
||||||
|
|
||||||
## Modes
|
## Options
|
||||||
There are eight available game modes:
|
### Buttons
|
||||||
- TGM1: 4 history w/ 4 rerolls, never start with O, S or Z.
|
Switch between whether A or B rotates clockwise and vice versa.
|
||||||
- TGM2: 4 history w/ 6 rerolls, never start with O, S or Z. Sonic drop.
|
|
||||||
- TGM3: 4 history w/ 6 rerolls and drought protection, never start with O, S or Z. Sonic drop. Extra floor and wall kicks for I and T pieces.
|
### RNG Mode
|
||||||
- HELL: Pure random piece generation.
|
Choose between a few randomizer options:
|
||||||
- EASY: 4 history w/ 256 rerolls, never start with O, S or Z. Sonic drop.
|
- TGM1: 4 history, 4 rerolls.
|
||||||
- TGW2: TGM2 but with hard drop.
|
- TGM2: 4 history, 6 rerolls.
|
||||||
- TGW3: TGM3 but with hard drop.
|
- TGM3: The TGM3 RNG system.
|
||||||
- EAWY: EASY but with hard drop.
|
- HELL: Pure Random.
|
||||||
|
- NES: Reroll once if you get the same piece as the previous one.
|
||||||
|
|
||||||
|
### Rot Mode
|
||||||
|
Select the rotation rules:
|
||||||
|
- ARS1: Classic ARS from TGM1 and TGM2.
|
||||||
|
- ARS2: ARS from TGM3.
|
||||||
|
|
||||||
|
### Drop Mode
|
||||||
|
Select whether up performs a sonic drop, a hard drop, or nothing at all.
|
||||||
|
|
||||||
|
### Speed Curve
|
||||||
|
Check back later! For now you're stuck with the default.
|
||||||
|
|
||||||
|
### Always 20G
|
||||||
|
Whether you want instant-drop gravity to be active at any level.
|
||||||
|
|
||||||
|
### Start Level
|
||||||
|
Choose any of the speed breakpoints to start the game at.
|
||||||
|
|
||||||
|
|
||||||
## Scoring
|
## Scoring
|
||||||
|
@ -59,9 +77,8 @@ Please do not try running it on older emulators such as VBA, since this game use
|
||||||
## Controls
|
## Controls
|
||||||
### Menu
|
### Menu
|
||||||
- A/B/Start — Start the game
|
- A/B/Start — Start the game
|
||||||
- Left/Right — Switch A/B rotation direction
|
- Up/Down — Change which option is selected
|
||||||
- Up/Down — Select starting level
|
- Left/Right — Change the value of the option
|
||||||
- Select — Select game mode
|
|
||||||
|
|
||||||
### Gameplay
|
### Gameplay
|
||||||
- A — Rotate 1
|
- A — Rotate 1
|
||||||
|
@ -86,8 +103,6 @@ The game can be built using gnu make and the RGBDS toolchain.
|
||||||
|
|
||||||
|
|
||||||
## Future Goals
|
## Future Goals
|
||||||
- Improve main menu.
|
|
||||||
- Decouple rotation rules, rng rules, and speed curve from each other.
|
|
||||||
- Multiplayer with items.
|
- Multiplayer with items.
|
||||||
- Colorization.
|
- Colorization.
|
||||||
- ...
|
- ...
|
||||||
|
|
|
@ -89,10 +89,31 @@ sPause::
|
||||||
db " P A U S E"
|
db " P A U S E"
|
||||||
db "P A U S E "
|
db "P A U S E "
|
||||||
db " P A U S E"
|
db " P A U S E"
|
||||||
sEaster0:: db $D4, $D6, $D8, $DA, $DC
|
sOption0::
|
||||||
sEaster1:: db $D5, $D7, $D9, $DB, $DD
|
db "NORM"
|
||||||
sEaster2:: db $DE, $E0, $D8, $DA, $DC
|
db " INV"
|
||||||
sEaster3:: db $DF, $E1, $D9, $DB, $DD
|
sOption1::
|
||||||
|
db "TGM1"
|
||||||
|
db "TGM2"
|
||||||
|
db "TGM3"
|
||||||
|
db "HELL"
|
||||||
|
db " NES"
|
||||||
|
sOption2::
|
||||||
|
db "ARS1"
|
||||||
|
db "ARS2"
|
||||||
|
sOption3::
|
||||||
|
db "SNIC"
|
||||||
|
db "HARD"
|
||||||
|
db "NONE"
|
||||||
|
sOption4::
|
||||||
|
db "DMGT"
|
||||||
|
sOption5::
|
||||||
|
db " NO"
|
||||||
|
db " YES"
|
||||||
|
sEaster0:: db $C4, $C6, $C8, $CA, $CC
|
||||||
|
sEaster1:: db $C5, $C7, $C9, $CB, $CD
|
||||||
|
sEaster2:: db $CE, $D0, $C8, $CA, $CC
|
||||||
|
sEaster3:: db $CF, $D1, $C9, $CB, $CD
|
||||||
sPieceXOffsets:: ; How to draw each piece. X-offsets of the sprites.
|
sPieceXOffsets:: ; How to draw each piece. X-offsets of the sprites.
|
||||||
db 0, 8, 16, 24 ; I
|
db 0, 8, 16, 24 ; I
|
||||||
db 0, 8, 8, 16 ; Z
|
db 0, 8, 8, 16 ; Z
|
||||||
|
|
|
@ -781,7 +781,7 @@ FieldProcess::
|
||||||
; HANDLE ROTATION
|
; HANDLE ROTATION
|
||||||
; Want rotate CCW?
|
; Want rotate CCW?
|
||||||
.wantrotccw
|
.wantrotccw
|
||||||
ldh a, [hSwapAB]
|
ld a, [wSwapABState]
|
||||||
cp a, 0
|
cp a, 0
|
||||||
jr z, .ldb1
|
jr z, .ldb1
|
||||||
.lda1
|
.lda1
|
||||||
|
@ -800,7 +800,7 @@ FieldProcess::
|
||||||
|
|
||||||
; Want rotate CW?
|
; Want rotate CW?
|
||||||
.wantrotcw
|
.wantrotcw
|
||||||
ldh a, [hSwapAB]
|
ld a, [wSwapABState]
|
||||||
cp a, 0
|
cp a, 0
|
||||||
jr z, .lda2
|
jr z, .lda2
|
||||||
.ldb2
|
.ldb2
|
||||||
|
@ -862,13 +862,9 @@ FieldProcess::
|
||||||
; I piece only kicks in TGM3/TGW3/EASY/EAWY
|
; I piece only kicks in TGM3/TGW3/EASY/EAWY
|
||||||
cp a, PIECE_I
|
cp a, PIECE_I
|
||||||
jr nz, :+
|
jr nz, :+
|
||||||
ldh a, [hSimulationMode]
|
ld a, [wRotModeState]
|
||||||
cp a, MODE_TGM1
|
cp a, ROT_MODE_ARSTI
|
||||||
jp z, .norot
|
jp nz, .norot
|
||||||
cp a, MODE_TGM2
|
|
||||||
jp z, .norot
|
|
||||||
cp a, MODE_HELL
|
|
||||||
jp z, .norot
|
|
||||||
jr .trykickright
|
jr .trykickright
|
||||||
|
|
||||||
; T/L/J only kick if not through the middle axis.
|
; T/L/J only kick if not through the middle axis.
|
||||||
|
@ -948,13 +944,9 @@ FieldProcess::
|
||||||
|
|
||||||
; In TGM3, TGW3, EASY, and EAWY modes, there are a few other kicks possible.
|
; In TGM3, TGW3, EASY, and EAWY modes, there are a few other kicks possible.
|
||||||
.maybetgm3rot
|
.maybetgm3rot
|
||||||
ldh a, [hSimulationMode]
|
ld a, [wRotModeState]
|
||||||
cp a, MODE_TGM1
|
cp a, ROT_MODE_ARSTI
|
||||||
jp z, .norot
|
jp nz, .norot
|
||||||
cp a, MODE_TGM2
|
|
||||||
jp z, .norot
|
|
||||||
cp a, MODE_HELL
|
|
||||||
jp z, .norot
|
|
||||||
|
|
||||||
; In the case of a T piece, try the space above.
|
; In the case of a T piece, try the space above.
|
||||||
.checkt
|
.checkt
|
||||||
|
@ -1179,16 +1171,10 @@ FieldProcess::
|
||||||
jr z, .postdrop
|
jr z, .postdrop
|
||||||
|
|
||||||
; What kind, if any?
|
; What kind, if any?
|
||||||
ldh a, [hSimulationMode]
|
ld a, [wDropModeState]
|
||||||
cp a, MODE_TGM1
|
cp a, DROP_MODE_NONE
|
||||||
jr z, .postdrop
|
jr z, .postdrop
|
||||||
cp a, MODE_HELL
|
cp a, DROP_MODE_HARD
|
||||||
jr z, .postdrop
|
|
||||||
cp a, MODE_TGW2
|
|
||||||
jr z, .harddrop
|
|
||||||
cp a, MODE_TGW3
|
|
||||||
jr z, .harddrop
|
|
||||||
cp a, MODE_EAWY
|
|
||||||
jr z, .harddrop
|
jr z, .harddrop
|
||||||
|
|
||||||
; Sonic drop.
|
; Sonic drop.
|
||||||
|
@ -1793,10 +1779,8 @@ FieldDelay::
|
||||||
; Check if we are in a TGM3 mode and thus need to handle line counts of 3 and 4 differently.
|
; Check if we are in a TGM3 mode and thus need to handle line counts of 3 and 4 differently.
|
||||||
ldh a, [hLineClearCt]
|
ldh a, [hLineClearCt]
|
||||||
ld e, a
|
ld e, a
|
||||||
ldh a, [hSimulationMode]
|
ld a, [wRotModeState]
|
||||||
cp a, MODE_TGM3
|
cp a, ROT_MODE_ARSTI
|
||||||
jr z, .modifylines
|
|
||||||
cp a, MODE_TGW3
|
|
||||||
jr z, .modifylines
|
jr z, .modifylines
|
||||||
jr .applylines
|
jr .applylines
|
||||||
.modifylines
|
.modifylines
|
||||||
|
|
|
@ -108,23 +108,7 @@ DEF PALETTE_LIGHTER_0 EQU %11100100
|
||||||
DEF PALETTE_LIGHTER_1 EQU %10010000
|
DEF PALETTE_LIGHTER_1 EQU %10010000
|
||||||
DEF PALETTE_LIGHTER_2 EQU %01000000
|
DEF PALETTE_LIGHTER_2 EQU %01000000
|
||||||
DEF PALETTE_LIGHTER_3 EQU %00000000
|
DEF PALETTE_LIGHTER_3 EQU %00000000
|
||||||
DEF TITLE_A EQU $99CD
|
|
||||||
DEF TITLE_B EQU $99CF
|
|
||||||
DEF TITLE_LEVEL EQU $996C
|
|
||||||
DEF TITLE_MODE EQU $9A2E
|
|
||||||
DEF FIELD_MODE EQU $9811
|
|
||||||
DEF FIELD_TOP_LEFT EQU $9800+1
|
|
||||||
DEF EASTER_0 EQU $9885
|
|
||||||
DEF EASTER_1 EQU $98A5
|
|
||||||
DEF TILE_FIELD_EMPTY EQU 4
|
|
||||||
DEF TILE_PIECE_0 EQU 10
|
|
||||||
DEF TILE_0 EQU 66
|
|
||||||
DEF TILE_MODE_FAINT_0 EQU 196
|
|
||||||
DEF TILE_MODE_0 EQU 234
|
|
||||||
DEF TILE_CLEARING EQU 124
|
|
||||||
DEF TILE_GHOST EQU 125
|
|
||||||
DEF TILE_A EQU 76
|
|
||||||
DEF TILE_B EQU 77
|
|
||||||
DEF NEXT_BASE_X EQU 120
|
DEF NEXT_BASE_X EQU 120
|
||||||
DEF NEXT_BASE_Y EQU 40
|
DEF NEXT_BASE_Y EQU 40
|
||||||
DEF HOLD_BASE_X EQU 120
|
DEF HOLD_BASE_X EQU 120
|
||||||
|
@ -134,8 +118,9 @@ DEF SCORE_BASE_Y EQU 115
|
||||||
DEF LEVEL_BASE_X EQU 120
|
DEF LEVEL_BASE_X EQU 120
|
||||||
DEF CLEVEL_BASE_Y EQU 136
|
DEF CLEVEL_BASE_Y EQU 136
|
||||||
DEF NLEVEL_BASE_Y EQU 148
|
DEF NLEVEL_BASE_Y EQU 148
|
||||||
DEF SCURVE_N_ENTRIES EQU 32
|
|
||||||
DEF SCURVE_ENTRY_SIZE EQU 8
|
DEF SCURVE_ENTRY_SIZE EQU 8
|
||||||
|
|
||||||
DEF PIECE_I EQU 0
|
DEF PIECE_I EQU 0
|
||||||
DEF PIECE_Z EQU 1
|
DEF PIECE_Z EQU 1
|
||||||
DEF PIECE_S EQU 2
|
DEF PIECE_S EQU 2
|
||||||
|
@ -144,6 +129,7 @@ DEF PIECE_L EQU 4
|
||||||
DEF PIECE_O EQU 5
|
DEF PIECE_O EQU 5
|
||||||
DEF PIECE_T EQU 6
|
DEF PIECE_T EQU 6
|
||||||
DEF PIECE_NONE EQU 255
|
DEF PIECE_NONE EQU 255
|
||||||
|
|
||||||
DEF SFX_IRS EQU 7
|
DEF SFX_IRS EQU 7
|
||||||
DEF SFX_DROP EQU 8
|
DEF SFX_DROP EQU 8
|
||||||
DEF SFX_LOCK EQU 9
|
DEF SFX_LOCK EQU 9
|
||||||
|
@ -153,20 +139,71 @@ DEF SFX_RANK_UP EQU 12
|
||||||
DEF SFX_LEVEL_UP EQU 13
|
DEF SFX_LEVEL_UP EQU 13
|
||||||
DEF SFX_IHS EQU 14
|
DEF SFX_IHS EQU 14
|
||||||
DEF SFX_READY_GO EQU 15
|
DEF SFX_READY_GO EQU 15
|
||||||
|
|
||||||
DEF STACK_SIZE EQU 64
|
DEF STACK_SIZE EQU 64
|
||||||
DEF GAME_OVER_R10 EQU 133
|
DEF GAME_OVER_R10 EQU 133
|
||||||
DEF GAME_OVER_R12 EQU 153
|
DEF GAME_OVER_R12 EQU 153
|
||||||
DEF GAME_OVER_R14 EQU 173
|
DEF GAME_OVER_R14 EQU 173
|
||||||
DEF GAME_OVER_OTHER EQU 131
|
DEF GAME_OVER_OTHER EQU 131
|
||||||
DEF LEADY_GO_TIME EQU 90
|
DEF LEADY_GO_TIME EQU 90
|
||||||
DEF MODE_TGM1 EQU 0
|
|
||||||
DEF MODE_TGM2 EQU 1
|
DEF BUTTON_MODE_NORM EQU 0
|
||||||
DEF MODE_TGM3 EQU 2
|
DEF BUTTON_MODE_INVR EQU 1
|
||||||
DEF MODE_HELL EQU 3
|
DEF BUTTON_MODE_COUNT EQU 2
|
||||||
DEF MODE_EASY EQU 4
|
|
||||||
DEF MODE_TGW2 EQU 5
|
DEF TILE_RNG_MODE_BASE EQU 217
|
||||||
DEF MODE_TGW3 EQU 6
|
DEF RNG_MODE_TGM1 EQU 0
|
||||||
DEF MODE_EAWY EQU 7
|
DEF RNG_MODE_TGM2 EQU 1
|
||||||
|
DEF RNG_MODE_TGM3 EQU 2
|
||||||
|
DEF RNG_MODE_HELL EQU 3
|
||||||
|
DEF RNG_MODE_NES EQU 4
|
||||||
|
DEF RNG_MODE_COUNT EQU 5
|
||||||
|
|
||||||
|
DEF TILE_ROT_MODE_BASE EQU 225
|
||||||
|
DEF ROT_MODE_ARS EQU 0
|
||||||
|
DEF ROT_MODE_ARSTI EQU 1
|
||||||
|
DEF ROT_MODE_COUNT EQU 2
|
||||||
|
|
||||||
|
DEF TILE_DROP_MODE_BASE EQU 229
|
||||||
|
DEF DROP_MODE_SONIC EQU 0
|
||||||
|
DEF DROP_MODE_HARD EQU 1
|
||||||
|
DEF DROP_MODE_NONE EQU 2
|
||||||
|
DEF DROP_MODE_COUNT EQU 3
|
||||||
|
|
||||||
|
DEF SCURVE_DMGT EQU 0
|
||||||
|
DEF SCURVE_COUNT EQU 1
|
||||||
|
|
||||||
|
DEF TILE_HIG_MODE_BASE EQU 232
|
||||||
|
DEF HIG_MODE_OFF EQU 0
|
||||||
|
DEF HIG_MODE_ON EQU 1
|
||||||
|
DEF HIG_MODE_COUNT EQU 2
|
||||||
|
|
||||||
|
DEF TILE_FIELD_EMPTY EQU 4
|
||||||
|
DEF TILE_PIECE_0 EQU 10
|
||||||
|
DEF TILE_0 EQU 66
|
||||||
|
DEF TILE_CLEARING EQU 124
|
||||||
|
DEF TILE_GHOST EQU 125
|
||||||
|
DEF TILE_SELECTED EQU 193
|
||||||
|
DEF TILE_UNSELECTED EQU 194
|
||||||
|
|
||||||
|
DEF TITLE_OPTIONS EQU 7
|
||||||
|
DEF TITLE_OPTION_0 EQU $98E0
|
||||||
|
DEF TITLE_OPTION_1 EQU $9920
|
||||||
|
DEF TITLE_OPTION_2 EQU $9960
|
||||||
|
DEF TITLE_OPTION_3 EQU $99A0
|
||||||
|
DEF TITLE_OPTION_4 EQU $99E0
|
||||||
|
DEF TITLE_OPTION_5 EQU $9A20
|
||||||
|
DEF TITLE_OPTION_6 EQU $9A60
|
||||||
|
DEF TITLE_OPTION_OFFSET EQU 15
|
||||||
|
|
||||||
|
DEF FIELD_RNG EQU $9852
|
||||||
|
DEF FIELD_ROT EQU $9892
|
||||||
|
DEF FIELD_DROP EQU $9912
|
||||||
|
DEF FIELD_HIG EQU $9952
|
||||||
|
DEF FIELD_TOP_LEFT EQU $9800+1
|
||||||
|
|
||||||
|
DEF EASTER_0 EQU $9845
|
||||||
|
DEF EASTER_1 EQU $9865
|
||||||
|
|
||||||
|
|
||||||
ENDC
|
ENDC
|
||||||
|
|
|
@ -345,6 +345,15 @@ DoSpeedUp:
|
||||||
ldh [hSpeedCurvePtr], a
|
ldh [hSpeedCurvePtr], a
|
||||||
ld a, h
|
ld a, h
|
||||||
ldh [hSpeedCurvePtr+1], a
|
ldh [hSpeedCurvePtr+1], a
|
||||||
|
|
||||||
|
; Do we want to force 20G?
|
||||||
|
ld a, [wAlways20GState]
|
||||||
|
cp a, 0
|
||||||
|
ret z
|
||||||
|
ld a, 20
|
||||||
|
ldh [hCurrentGravityPerTick], a
|
||||||
|
ld a, 1
|
||||||
|
ldh [hCurrentFramesPerGravityTick], a
|
||||||
ret
|
ret
|
||||||
|
|
||||||
|
|
||||||
|
|
88
src/main.asm
88
src/main.asm
|
@ -27,10 +27,15 @@ INCLUDE "res/title_map.inc"
|
||||||
|
|
||||||
SECTION "High Globals", HRAM
|
SECTION "High Globals", HRAM
|
||||||
hGameState:: ds 1
|
hGameState:: ds 1
|
||||||
hSwapAB:: ds 1
|
|
||||||
hSimulationMode:: ds 1
|
|
||||||
|
|
||||||
SECTION "Globals", WRAM0
|
SECTION "Globals", WRAM0
|
||||||
|
wSwapABState:: ds 1
|
||||||
|
wRNGModeState:: ds 1
|
||||||
|
wRotModeState:: ds 1
|
||||||
|
wDropModeState:: ds 1
|
||||||
|
wSpeedCurveState:: ds 1
|
||||||
|
wAlways20GState:: ds 1
|
||||||
wInitialA:: ds 1
|
wInitialA:: ds 1
|
||||||
wInitialB:: ds 1
|
wInitialB:: ds 1
|
||||||
wInitialC:: ds 1
|
wInitialC:: ds 1
|
||||||
|
@ -41,9 +46,13 @@ wInitialL:: ds 1
|
||||||
|
|
||||||
|
|
||||||
SECTION "Persistent Globals", SRAM
|
SECTION "Persistent Globals", SRAM
|
||||||
rMagic:: ds 3
|
rMagic:: ds 4
|
||||||
rSwapAB:: ds 1
|
rSwapABState:: ds 1
|
||||||
rSimulationMode:: ds 1
|
rRNGModeState:: ds 1
|
||||||
|
rRotModeState:: ds 1
|
||||||
|
rDropModeState:: ds 1
|
||||||
|
rSpeedCurveState:: ds 1
|
||||||
|
rAlways20GState:: ds 1
|
||||||
|
|
||||||
|
|
||||||
SECTION "Stack", WRAM0
|
SECTION "Stack", WRAM0
|
||||||
|
@ -95,35 +104,70 @@ Main::
|
||||||
|
|
||||||
; Check for save data.
|
; Check for save data.
|
||||||
ld a, [rMagic]
|
ld a, [rMagic]
|
||||||
cp a, "T"
|
cp a, "D"
|
||||||
jr nz, .nosavedata
|
|
||||||
ld a, [rMagic+1]
|
|
||||||
cp a, "G"
|
|
||||||
jr nz, .nosavedata
|
jr nz, .nosavedata
|
||||||
ld a, [rMagic+1]
|
ld a, [rMagic+1]
|
||||||
cp a, "M"
|
cp a, "M"
|
||||||
jr nz, .nosavedata
|
jr nz, .nosavedata
|
||||||
|
ld a, [rMagic+2]
|
||||||
|
cp a, "G"
|
||||||
|
jr nz, .nosavedata
|
||||||
|
ld a, [rMagic+3]
|
||||||
|
cp a, "0"
|
||||||
|
jr nz, .nosavedata
|
||||||
|
|
||||||
.savedata
|
.savedata
|
||||||
ld a, [rSwapAB]
|
ld a, [rSwapABState]
|
||||||
ldh [hSwapAB], a
|
ld [wSwapABState], a
|
||||||
ld a, [rSimulationMode]
|
ld a, [rRNGModeState]
|
||||||
ldh [hSimulationMode], a
|
ld [wRNGModeState], a
|
||||||
|
ld a, [rRotModeState]
|
||||||
|
ld [wRotModeState], a
|
||||||
|
ld a, [rDropModeState]
|
||||||
|
ld [wDropModeState], a
|
||||||
|
ld a, [rSpeedCurveState]
|
||||||
|
ld [wSpeedCurveState], a
|
||||||
|
ld a, [rAlways20GState]
|
||||||
|
ld [wAlways20GState], a
|
||||||
jr .otherinit
|
jr .otherinit
|
||||||
|
|
||||||
.nosavedata
|
.nosavedata
|
||||||
ld a, "T"
|
ld a, "D"
|
||||||
ld [rMagic], a
|
ld [rMagic], a
|
||||||
ld a, "G"
|
|
||||||
ld [rMagic+1], a
|
|
||||||
ld a, "M"
|
ld a, "M"
|
||||||
|
ld [rMagic+1], a
|
||||||
|
ld a, "G"
|
||||||
ld [rMagic+2], a
|
ld [rMagic+2], a
|
||||||
xor a, a
|
ld a, "0"
|
||||||
ldh [hSwapAB], a
|
ld [rMagic+3], a
|
||||||
ld [rSwapAB], a
|
|
||||||
ld a, MODE_TGM2
|
ld a, BUTTON_MODE_NORM
|
||||||
ldh [hSimulationMode], a
|
ld [rSwapABState], a
|
||||||
ld [rSimulationMode], a
|
ld [wSwapABState], a
|
||||||
|
|
||||||
|
ld a, RNG_MODE_TGM3
|
||||||
|
ld [rRNGModeState], a
|
||||||
|
ld [wRNGModeState], a
|
||||||
|
|
||||||
|
ld a, RNG_MODE_TGM3
|
||||||
|
ld [rRNGModeState], a
|
||||||
|
ld [wRNGModeState], a
|
||||||
|
|
||||||
|
ld a, ROT_MODE_ARSTI
|
||||||
|
ld [rRotModeState], a
|
||||||
|
ld [wRotModeState], a
|
||||||
|
|
||||||
|
ld a, DROP_MODE_SONIC
|
||||||
|
ld [rDropModeState], a
|
||||||
|
ld [wDropModeState], a
|
||||||
|
|
||||||
|
ld a, SCURVE_DMGT
|
||||||
|
ld [rSpeedCurveState], a
|
||||||
|
ld [wSpeedCurveState], a
|
||||||
|
|
||||||
|
ld a, HIG_MODE_OFF
|
||||||
|
ld [rAlways20GState], a
|
||||||
|
ld [wAlways20GState], a
|
||||||
|
|
||||||
.otherinit
|
.otherinit
|
||||||
ld hl, sSpeedCurve
|
ld hl, sSpeedCurve
|
||||||
|
|
Binary file not shown.
Binary file not shown.
|
@ -406,44 +406,12 @@ Tiles::
|
||||||
DB $03,$03,$03,$03,$0F,$0F,$00,$00
|
DB $03,$03,$03,$03,$0F,$0F,$00,$00
|
||||||
DB $00,$00,$00,$00,$00,$00,$00,$00
|
DB $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
DB $00,$00,$00,$00,$00,$00,$00,$00
|
DB $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
DB $03,$03,$02,$02,$02,$02,$03,$03
|
DB $C0,$C0,$F0,$F0,$FC,$FC,$FF,$FF
|
||||||
DB $00,$00,$00,$00,$03,$03,$00,$00
|
DB $FC,$FC,$F0,$F0,$C0,$C0,$00,$00
|
||||||
DB $BA,$BA,$22,$22,$22,$22,$B2,$B2
|
DB $C0,$00,$F0,$00,$FC,$00,$FF,$00
|
||||||
DB $A2,$A2,$A2,$A2,$BB,$BB,$00,$00
|
DB $FC,$00,$F0,$00,$C0,$00,$00,$00
|
||||||
DB $00,$00,$00,$00,$00,$00,$00,$00
|
DB $38,$38,$44,$44,$9A,$9A,$A2,$A2
|
||||||
DB $00,$00,$00,$00,$80,$80,$00,$00
|
DB $9A,$9A,$44,$44,$38,$38,$00,$00
|
||||||
DB $00,$00,$EE,$00,$48,$00,$4A,$00
|
|
||||||
DB $4A,$00,$4E,$00,$00,$00,$00,$00
|
|
||||||
DB $00,$00,$A4,$00,$EC,$00,$A4,$00
|
|
||||||
DB $A4,$00,$AE,$00,$00,$00,$00,$00
|
|
||||||
DB $00,$00,$EE,$00,$48,$00,$4A,$00
|
|
||||||
DB $4A,$00,$4E,$00,$00,$00,$00,$00
|
|
||||||
DB $00,$00,$AC,$00,$E2,$00,$A4,$00
|
|
||||||
DB $A8,$00,$AE,$00,$00,$00,$00,$00
|
|
||||||
DB $00,$00,$EE,$00,$48,$00,$4A,$00
|
|
||||||
DB $4A,$00,$4E,$00,$00,$00,$00,$00
|
|
||||||
DB $00,$00,$AC,$00,$E2,$00,$A4,$00
|
|
||||||
DB $A2,$00,$AC,$00,$00,$00,$00,$00
|
|
||||||
DB $00,$00,$AE,$00,$A8,$00,$EE,$00
|
|
||||||
DB $A8,$00,$AE,$00,$00,$00,$00,$00
|
|
||||||
DB $00,$00,$88,$00,$88,$00,$88,$00
|
|
||||||
DB $88,$00,$EE,$00,$00,$00,$00,$00
|
|
||||||
DB $00,$00,$E4,$00,$8A,$00,$CE,$00
|
|
||||||
DB $8A,$00,$EA,$00,$00,$00,$00,$00
|
|
||||||
DB $00,$00,$6A,$00,$8A,$00,$44,$00
|
|
||||||
DB $24,$00,$C4,$00,$00,$00,$00,$00
|
|
||||||
DB $00,$00,$EE,$00,$48,$00,$4A,$00
|
|
||||||
DB $4A,$00,$4E,$00,$00,$00,$00,$00
|
|
||||||
DB $00,$00,$AC,$00,$A2,$00,$A4,$00
|
|
||||||
DB $E8,$00,$AE,$00,$00,$00,$00,$00
|
|
||||||
DB $00,$00,$EE,$00,$48,$00,$4A,$00
|
|
||||||
DB $4A,$00,$4E,$00,$00,$00,$00,$00
|
|
||||||
DB $00,$00,$AC,$00,$A2,$00,$A4,$00
|
|
||||||
DB $E2,$00,$AC,$00,$00,$00,$00,$00
|
|
||||||
DB $00,$00,$E4,$00,$8A,$00,$CE,$00
|
|
||||||
DB $8A,$00,$EA,$00,$00,$00,$00,$00
|
|
||||||
DB $00,$00,$AA,$00,$AA,$00,$A4,$00
|
|
||||||
DB $E4,$00,$A4,$00,$00,$00,$00,$00
|
|
||||||
DB $7C,$7C,$42,$42,$41,$41,$5D,$48
|
DB $7C,$7C,$42,$42,$41,$41,$5D,$48
|
||||||
DB $6E,$4C,$5B,$4A,$79,$49,$00,$00
|
DB $6E,$4C,$5B,$4A,$79,$49,$00,$00
|
||||||
DB $68,$58,$58,$68,$68,$58,$48,$78
|
DB $68,$58,$58,$68,$68,$58,$48,$78
|
||||||
|
@ -472,6 +440,54 @@ Tiles::
|
||||||
DB $2D,$25,$3D,$3D,$01,$01,$00,$00
|
DB $2D,$25,$3D,$3D,$01,$01,$00,$00
|
||||||
DB $01,$01,$3D,$3D,$2D,$35,$C5,$FD
|
DB $01,$01,$3D,$3D,$2D,$35,$C5,$FD
|
||||||
DB $08,$F8,$10,$F0,$E0,$E0,$00,$00
|
DB $08,$F8,$10,$F0,$E0,$E0,$00,$00
|
||||||
|
DB $00,$00,$7C,$7C,$44,$44,$7C,$7C
|
||||||
|
DB $44,$44,$44,$44,$00,$00,$00,$00
|
||||||
|
DB $00,$00,$7C,$7C,$40,$40,$5C,$5C
|
||||||
|
DB $44,$44,$7C,$7C,$00,$00,$00,$00
|
||||||
|
DB $00,$00,$7C,$7C,$44,$44,$78,$78
|
||||||
|
DB $44,$44,$7C,$7C,$00,$00,$00,$00
|
||||||
|
DB $00,$00,$7C,$7C,$10,$10,$10,$10
|
||||||
|
DB $10,$10,$10,$10,$00,$00,$00,$00
|
||||||
|
DB $00,$00,$7C,$7C,$40,$40,$7C,$7C
|
||||||
|
DB $04,$04,$7C,$7C,$00,$00,$00,$00
|
||||||
|
DB $00,$00,$7C,$7C,$40,$40,$5C,$5C
|
||||||
|
DB $44,$44,$7C,$7C,$00,$00,$00,$00
|
||||||
|
DB $00,$00,$7C,$7C,$44,$44,$78,$78
|
||||||
|
DB $44,$44,$7C,$7C,$00,$00,$00,$00
|
||||||
|
DB $00,$75,$00,$47,$00,$55,$00,$55
|
||||||
|
DB $00,$75,$00,$00,$00,$3E,$00,$00
|
||||||
|
DB $00,$75,$00,$47,$00,$55,$00,$55
|
||||||
|
DB $00,$75,$00,$00,$00,$36,$00,$00
|
||||||
|
DB $00,$75,$00,$47,$00,$55,$00,$55
|
||||||
|
DB $00,$75,$00,$00,$00,$2A,$00,$00
|
||||||
|
DB $00,$00,$00,$3E,$00,$7F,$00,$6B
|
||||||
|
DB $00,$3E,$00,$2A,$00,$00,$00,$00
|
||||||
|
DB $00,$00,$00,$FF,$20,$81,$76,$81
|
||||||
|
DB $20,$81,$00,$FF,$00,$00,$00,$00
|
||||||
|
DB $00,$00,$00,$00,$28,$28,$10,$10
|
||||||
|
DB $28,$28,$00,$00,$00,$00,$00,$00
|
||||||
|
DB $00,$00,$00,$00,$28,$28,$10,$10
|
||||||
|
DB $28,$28,$00,$00,$00,$00,$00,$00
|
||||||
|
DB $00,$00,$00,$00,$28,$28,$10,$10
|
||||||
|
DB $28,$28,$00,$00,$00,$00,$00,$00
|
||||||
|
DB $00,$26,$00,$55,$00,$76,$00,$55
|
||||||
|
DB $00,$55,$00,$00,$00,$3E,$00,$00
|
||||||
|
DB $00,$26,$00,$55,$00,$76,$00,$55
|
||||||
|
DB $00,$55,$00,$00,$00,$2A,$00,$00
|
||||||
|
DB $00,$00,$00,$00,$28,$28,$10,$10
|
||||||
|
DB $28,$28,$00,$00,$00,$00,$00,$00
|
||||||
|
DB $00,$00,$00,$00,$28,$28,$10,$10
|
||||||
|
DB $28,$28,$00,$00,$00,$00,$00,$00
|
||||||
|
DB $02,$70,$02,$40,$02,$70,$07,$10
|
||||||
|
DB $07,$70,$02,$00,$00,$1F,$00,$00
|
||||||
|
DB $02,$50,$02,$50,$02,$70,$07,$50
|
||||||
|
DB $07,$50,$02,$00,$00,$1F,$00,$00
|
||||||
|
DB $02,$50,$02,$50,$02,$20,$07,$50
|
||||||
|
DB $07,$50,$02,$00,$00,$1F,$00,$00
|
||||||
|
DB $00,$3E,$02,$61,$04,$51,$24,$49
|
||||||
|
DB $00,$45,$30,$43,$00,$3E,$00,$00
|
||||||
|
DB $00,$00,$00,$62,$00,$15,$00,$25
|
||||||
|
DB $00,$45,$00,$72,$00,$00,$00,$00
|
||||||
DB $00,$00,$00,$00,$00,$00,$00,$00
|
DB $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
DB $00,$00,$00,$00,$00,$00,$00,$00
|
DB $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
DB $00,$00,$00,$00,$00,$00,$00,$00
|
DB $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
|
@ -488,50 +504,34 @@ Tiles::
|
||||||
DB $00,$00,$00,$00,$00,$00,$00,$00
|
DB $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
DB $00,$00,$00,$00,$00,$00,$00,$00
|
DB $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
DB $00,$00,$00,$00,$00,$00,$00,$00
|
DB $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
DB $00,$00,$EE,$EE,$48,$48,$4A,$4A
|
DB $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
DB $4A,$4A,$4E,$4E,$00,$00,$00,$00
|
DB $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
DB $00,$00,$A4,$A4,$EC,$EC,$A4,$A4
|
DB $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
DB $A4,$A4,$AE,$AE,$00,$00,$00,$00
|
DB $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
DB $00,$00,$EE,$EE,$48,$48,$4A,$4A
|
DB $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
DB $4A,$4A,$4E,$4E,$00,$00,$00,$00
|
DB $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
DB $00,$00,$AC,$AC,$E2,$E2,$A4,$A4
|
DB $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
DB $A8,$A8,$AE,$AE,$00,$00,$00,$00
|
DB $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
DB $00,$00,$EE,$EE,$48,$48,$4A,$4A
|
DB $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
DB $4A,$4A,$4E,$4E,$00,$00,$00,$00
|
DB $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
DB $00,$00,$AC,$AC,$E2,$E2,$A4,$A4
|
DB $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
DB $A2,$A2,$AC,$AC,$00,$00,$00,$00
|
DB $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
DB $00,$00,$AE,$AE,$A8,$A8,$EE,$EE
|
DB $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
DB $A8,$A8,$AE,$AE,$00,$00,$00,$00
|
DB $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
DB $00,$00,$88,$88,$88,$88,$88,$88
|
DB $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
DB $88,$88,$EE,$EE,$00,$00,$00,$00
|
DB $00,$00,$00,$00,$00,$00,$00,$00
|
||||||
DB $00,$00,$E4,$E4,$8A,$8A,$CE,$CE
|
DB $44,$44,$44,$44,$28,$28,$28,$28
|
||||||
DB $8A,$8A,$EA,$EA,$00,$00,$00,$00
|
DB $28,$28,$10,$10,$12,$12,$00,$00
|
||||||
DB $00,$00,$6A,$6A,$8A,$8A,$44,$44
|
DB $C4,$C4,$2A,$2A,$2A,$2A,$4A,$4A
|
||||||
DB $24,$24,$C4,$C4,$00,$00,$00,$00
|
DB $8A,$8A,$8A,$8A,$E4,$E4,$00,$00
|
||||||
DB $00,$00,$EE,$EE,$48,$48,$4A,$4A
|
DB $CC,$CC,$22,$22,$22,$22,$44,$44
|
||||||
DB $4A,$4A,$4E,$4E,$00,$00,$00,$00
|
DB $82,$82,$82,$82,$EC,$EC,$00,$00
|
||||||
DB $00,$00,$AC,$AC,$A2,$A2,$A4,$A4
|
DB $44,$44,$CA,$CA,$4A,$4A,$4A,$4A
|
||||||
DB $E8,$E8,$AE,$AE,$00,$00,$00,$00
|
|
||||||
DB $00,$00,$EE,$EE,$48,$48,$4A,$4A
|
|
||||||
DB $4A,$4A,$4E,$4E,$00,$00,$00,$00
|
|
||||||
DB $00,$00,$AC,$AC,$A2,$A2,$A4,$A4
|
|
||||||
DB $E2,$E2,$AC,$AC,$00,$00,$00,$00
|
|
||||||
DB $00,$00,$E4,$E4,$8A,$8A,$CE,$CE
|
|
||||||
DB $8A,$8A,$EA,$EA,$00,$00,$00,$00
|
|
||||||
DB $00,$00,$AA,$AA,$AA,$AA,$A4,$A4
|
|
||||||
DB $E4,$E4,$A4,$A4,$00,$00,$00,$00
|
|
||||||
DB $00,$00,$00,$00,$A0,$A0,$A0,$A0
|
|
||||||
DB $A0,$A0,$A0,$A0,$48,$48,$00,$00
|
|
||||||
DB $00,$00,$00,$00,$C4,$C4,$2A,$2A
|
|
||||||
DB $4A,$4A,$8A,$8A,$E4,$E4,$00,$00
|
|
||||||
DB $00,$00,$00,$00,$CC,$CC,$22,$22
|
|
||||||
DB $4C,$4C,$82,$82,$EC,$EC,$00,$00
|
|
||||||
DB $00,$00,$00,$00,$44,$44,$CA,$CA
|
|
||||||
DB $4A,$4A,$4A,$4A,$E4,$E4,$00,$00
|
DB $4A,$4A,$4A,$4A,$E4,$E4,$00,$00
|
||||||
DB $00,$00,$00,$00,$CC,$CC,$22,$22
|
DB $CC,$CC,$22,$22,$22,$22,$44,$44
|
||||||
DB $44,$44,$82,$82,$EC,$EC,$00,$00
|
DB $82,$82,$82,$82,$EC,$EC,$00,$00
|
||||||
DB $00,$00,$00,$00,$0C,$0C,$0A,$0A
|
DB $0C,$0C,$0A,$0A,$0A,$0A,$0A,$0A
|
||||||
DB $0C,$0C,$0A,$0A,$0C,$0C,$00,$00
|
DB $0A,$0A,$0A,$0A,$0C,$0C,$00,$00
|
||||||
TilesEnd::
|
TilesEnd::
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -21,69 +21,69 @@ DEF TITLE_MAP_INC EQU 1
|
||||||
|
|
||||||
SECTION "Title Screen Tilemap", ROM0
|
SECTION "Title Screen Tilemap", ROM0
|
||||||
TitleScreenTilemap::
|
TitleScreenTilemap::
|
||||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
DB $C3,$5B,$4C,$59,$4F,$5A,$5D,$4C,$01,$59
|
||||||
DB $01,$01,$01,$01,$FA,$FB,$FC,$FD,$FE,$FF
|
DB $5A,$61,$4C,$01,$FA,$FB,$FC,$FD,$FE,$FF
|
||||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
||||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
||||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
||||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
||||||
|
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$68
|
||||||
|
DB $6A,$6C,$6E,$70,$72,$74,$76,$78,$7A,$01
|
||||||
|
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
||||||
|
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
||||||
|
DB $01,$69,$6B,$6D,$6F,$71,$73,$75,$77,$79
|
||||||
|
DB $7B,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
||||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
||||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
||||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
||||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
||||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
DB $01,$01,$01,$01,$5B,$5D,$50,$5E,$5E,$01
|
||||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
DB $5E,$5F,$4C,$5D,$5F,$66,$01,$01,$01,$01
|
||||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
|
||||||
DB $01,$01,$01,$68,$6A,$6C,$6E,$70,$72,$74
|
|
||||||
DB $76,$78,$7A,$01,$01,$01,$01,$01,$01,$01
|
|
||||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
|
||||||
DB $01,$01,$01,$01,$01,$69,$6B,$6D,$6F,$71
|
|
||||||
DB $73,$75,$77,$79,$7B,$01,$01,$01,$01,$01
|
|
||||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
||||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
||||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
||||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
||||||
|
DB $01,$01,$01,$01,$C1,$01,$4D,$60,$5F,$5F
|
||||||
|
DB $5A,$59,$5E,$01,$01,$01,$01,$01,$81,$01
|
||||||
|
DB $01,$01,$01,$82,$01,$01,$01,$01,$01,$01
|
||||||
|
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
||||||
|
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
||||||
|
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
||||||
|
DB $01,$01,$01,$01,$01,$01,$01,$01,$C2,$01
|
||||||
|
DB $5D,$59,$52,$01,$58,$5A,$4F,$50,$01,$01
|
||||||
|
DB $01,$01,$81,$01,$01,$01,$01,$82,$01,$01
|
||||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
||||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
||||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
||||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
||||||
DB $5B,$5D,$50,$5E,$5E,$01,$5E,$5F,$4C,$5D
|
DB $01,$01,$C2,$01,$5D,$5A,$5F,$01,$58,$5A
|
||||||
DB $5F,$66,$01,$01,$01,$01,$01,$01,$01,$01
|
DB $4F,$50,$01,$01,$01,$01,$81,$01,$01,$01
|
||||||
|
DB $01,$82,$01,$01,$01,$01,$01,$01,$01,$01
|
||||||
|
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
||||||
|
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
||||||
|
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
||||||
|
DB $01,$01,$01,$01,$01,$01,$C2,$01,$4F,$5D
|
||||||
|
DB $5A,$5B,$01,$58,$5A,$4F,$50,$01,$01,$01
|
||||||
|
DB $81,$01,$01,$01,$01,$82,$01,$01,$01,$01
|
||||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
||||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
||||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
||||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
||||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
DB $C2,$01,$5E,$5B,$50,$50,$4F,$01,$4E,$60
|
||||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
DB $5D,$61,$50,$01,$81,$01,$01,$01,$01,$82
|
||||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
|
||||||
DB $01,$01,$01,$01,$7E,$01,$57,$50,$61,$50
|
|
||||||
DB $57,$01,$01,$81,$42,$42,$42,$42,$82,$01
|
|
||||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
||||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
||||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
||||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
||||||
|
DB $01,$01,$01,$01,$C2,$01,$4C,$57,$62,$4C
|
||||||
|
DB $64,$5E,$01,$44,$42,$52,$01,$01,$81,$01
|
||||||
|
DB $01,$01,$01,$82,$01,$01,$01,$01,$01,$01
|
||||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
||||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
||||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
||||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
DB $01,$01,$01,$01,$01,$01,$01,$01,$C2,$01
|
||||||
DB $7F,$01,$4D,$60,$5F,$5F,$5A,$59,$5E,$01
|
DB $5E,$5F,$4C,$5D,$5F,$01,$57,$50,$61,$50
|
||||||
DB $81,$4C,$80,$4D,$82,$01,$01,$01,$01,$01
|
DB $57,$01,$81,$01,$01,$01,$01,$82,$01,$01
|
||||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
|
||||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
|
||||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
|
||||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
|
||||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
|
||||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
|
||||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
|
||||||
DB $01,$01,$01,$01,$01,$C1,$C2,$C3,$58,$5A
|
|
||||||
DB $4F,$50,$01,$01,$01,$01,$01,$81,$C4,$C5
|
|
||||||
DB $82,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
|
||||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
|
||||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
|
||||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
|
||||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
|
||||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
|
||||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
|
||||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
||||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
||||||
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
DB $01,$01,$01,$01,$01,$01,$01,$01,$01,$01
|
||||||
|
|
53
src/rng.asm
53
src/rng.asm
|
@ -69,8 +69,8 @@ RNGInit::
|
||||||
ldh [hHeldPiece], a
|
ldh [hHeldPiece], a
|
||||||
|
|
||||||
; If we're in HELL mode, we don't care about anything but a random piece to start with.
|
; If we're in HELL mode, we don't care about anything but a random piece to start with.
|
||||||
ldh a, [hSimulationMode]
|
ld a, [wRNGModeState]
|
||||||
cp a, MODE_HELL
|
cp a, RNG_MODE_HELL
|
||||||
jr nz, .complexinit
|
jr nz, .complexinit
|
||||||
call Next7Piece
|
call Next7Piece
|
||||||
ld [hNextPiece], a
|
ld [hNextPiece], a
|
||||||
|
@ -84,8 +84,8 @@ RNGInit::
|
||||||
ldh [hPieceHistory+2], a
|
ldh [hPieceHistory+2], a
|
||||||
ldh [hPieceHistory+3], a
|
ldh [hPieceHistory+3], a
|
||||||
|
|
||||||
ldh a, [hSimulationMode]
|
ld a, [wRNGModeState]
|
||||||
cp a, MODE_TGM1
|
cp a, RNG_MODE_TGM1
|
||||||
jr z, :+
|
jr z, :+
|
||||||
ld a, PIECE_S
|
ld a, PIECE_S
|
||||||
ldh [hPieceHistory+2], a
|
ldh [hPieceHistory+2], a
|
||||||
|
@ -177,29 +177,14 @@ GetNextTGM2Piece:
|
||||||
: jr ShiftHistory
|
: jr ShiftHistory
|
||||||
|
|
||||||
|
|
||||||
; 4 History, (basically) infinite rerolls.
|
; 1 history, 1 reroll.
|
||||||
GetNextEasyPiece:
|
GetNextNesPiece:
|
||||||
ld a, 0
|
|
||||||
ld e, a
|
|
||||||
|
|
||||||
: dec e
|
|
||||||
jr z, :+
|
|
||||||
|
|
||||||
call Next7Piece
|
call Next7Piece
|
||||||
ld hl, hPieceHistory
|
ld hl, hPieceHistory
|
||||||
cp a, [hl]
|
cp a, [hl]
|
||||||
jr z, :-
|
jr nz, ShiftHistory
|
||||||
inc hl
|
call Next7Piece
|
||||||
cp a, [hl]
|
jr nz, ShiftHistory
|
||||||
jr z, :-
|
|
||||||
inc hl
|
|
||||||
cp a, [hl]
|
|
||||||
jr z, :-
|
|
||||||
inc hl
|
|
||||||
cp a, [hl]
|
|
||||||
jr z, :-
|
|
||||||
|
|
||||||
: jr ShiftHistory
|
|
||||||
|
|
||||||
|
|
||||||
; TGM3 mode... It's complex.
|
; TGM3 mode... It's complex.
|
||||||
|
@ -355,23 +340,17 @@ GetNextTGM3Piece:
|
||||||
|
|
||||||
|
|
||||||
GetNextPiece::
|
GetNextPiece::
|
||||||
ldh a, [hSimulationMode]
|
ld a, [wRNGModeState]
|
||||||
cp a, MODE_HELL
|
cp a, RNG_MODE_HELL
|
||||||
jp z, GetNextHellPiece
|
jp z, GetNextHellPiece
|
||||||
cp a, MODE_TGM1
|
cp a, RNG_MODE_TGM1
|
||||||
jp z, GetNextTGM1Piece
|
jp z, GetNextTGM1Piece
|
||||||
cp a, MODE_TGM2
|
cp a, RNG_MODE_TGM2
|
||||||
jp z, GetNextTGM2Piece
|
jp z, GetNextTGM2Piece
|
||||||
cp a, MODE_TGW2
|
cp a, RNG_MODE_TGM3
|
||||||
jp z, GetNextTGM2Piece
|
|
||||||
cp a, MODE_TGM3
|
|
||||||
jp z, GetNextTGM3Piece
|
jp z, GetNextTGM3Piece
|
||||||
cp a, MODE_TGW3
|
cp a, RNG_MODE_NES
|
||||||
jp z, GetNextTGM3Piece
|
jp z, GetNextNesPiece
|
||||||
cp a, MODE_EASY
|
|
||||||
jp z, GetNextEasyPiece
|
|
||||||
cp a, MODE_EAWY
|
|
||||||
jp z, GetNextEasyPiece
|
|
||||||
|
|
||||||
|
|
||||||
Next35Piece:
|
Next35Piece:
|
||||||
|
|
|
@ -63,13 +63,22 @@ SwitchToGameplay::
|
||||||
ld bc, GameplayTilemapEnd - GameplayTilemap
|
ld bc, GameplayTilemapEnd - GameplayTilemap
|
||||||
call UnsafeMemCopy
|
call UnsafeMemCopy
|
||||||
|
|
||||||
; Place a tell on the screen for mode.
|
; Place a tell on the screen for modes.
|
||||||
ld hl, FIELD_MODE
|
ld hl, FIELD_RNG
|
||||||
ldh a, [hSimulationMode]
|
ld a, [wRNGModeState]
|
||||||
sla a
|
add a, TILE_RNG_MODE_BASE
|
||||||
add a, TILE_MODE_FAINT_0
|
ld [hl], a
|
||||||
ld [hl+], a
|
ld hl, FIELD_ROT
|
||||||
inc a
|
ld a, [wRotModeState]
|
||||||
|
add a, TILE_ROT_MODE_BASE
|
||||||
|
ld [hl], a
|
||||||
|
ld hl, FIELD_DROP
|
||||||
|
ld a, [wDropModeState]
|
||||||
|
add a, TILE_DROP_MODE_BASE
|
||||||
|
ld [hl], a
|
||||||
|
ld hl, FIELD_HIG
|
||||||
|
ld a, [wAlways20GState]
|
||||||
|
add a, TILE_HIG_MODE_BASE
|
||||||
ld [hl], a
|
ld [hl], a
|
||||||
|
|
||||||
; Clear OAM.
|
; Clear OAM.
|
||||||
|
@ -214,7 +223,7 @@ fetchPieceMode:
|
||||||
; Check if IRS is requested.
|
; Check if IRS is requested.
|
||||||
; Apply the rotation if so.
|
; Apply the rotation if so.
|
||||||
.checkIRSA
|
.checkIRSA
|
||||||
ldh a, [hSwapAB]
|
ld a, [wSwapABState]
|
||||||
cp a, 0
|
cp a, 0
|
||||||
jr z, .lda1
|
jr z, .lda1
|
||||||
.ldb1
|
.ldb1
|
||||||
|
@ -237,7 +246,7 @@ fetchPieceMode:
|
||||||
call SFXEnqueue
|
call SFXEnqueue
|
||||||
|
|
||||||
.checkIRSB
|
.checkIRSB
|
||||||
ldh a, [hSwapAB]
|
ld a, [wSwapABState]
|
||||||
cp a, 0
|
cp a, 0
|
||||||
jr z, .ldb2
|
jr z, .ldb2
|
||||||
.lda2
|
.lda2
|
||||||
|
@ -530,7 +539,7 @@ DoHold:
|
||||||
; Check if IRS is requested.
|
; Check if IRS is requested.
|
||||||
; Apply the rotation if so.
|
; Apply the rotation if so.
|
||||||
.checkIRSHA
|
.checkIRSHA
|
||||||
ldh a, [hSwapAB]
|
ld a, [wSwapABState]
|
||||||
cp a, 0
|
cp a, 0
|
||||||
jr z, .lda3
|
jr z, .lda3
|
||||||
.ldb3
|
.ldb3
|
||||||
|
@ -554,7 +563,7 @@ DoHold:
|
||||||
jr .doHoldOperation
|
jr .doHoldOperation
|
||||||
|
|
||||||
.checkIRSHB
|
.checkIRSHB
|
||||||
ldh a, [hSwapAB]
|
ld a, [wSwapABState]
|
||||||
cp a, 0
|
cp a, 0
|
||||||
jr z, .ldb4
|
jr z, .ldb4
|
||||||
.lda4
|
.lda4
|
||||||
|
|
|
@ -22,6 +22,10 @@ DEF STATE_TITLE_ASM EQU 1
|
||||||
INCLUDE "globals.asm"
|
INCLUDE "globals.asm"
|
||||||
|
|
||||||
|
|
||||||
|
SECTION "Title Variables", WRAM0
|
||||||
|
wSelected: ds 1
|
||||||
|
|
||||||
|
|
||||||
SECTION "Title Functions", ROM0
|
SECTION "Title Functions", ROM0
|
||||||
SwitchToTitle::
|
SwitchToTitle::
|
||||||
; Turn the screen off if it's on.
|
; Turn the screen off if it's on.
|
||||||
|
@ -77,6 +81,7 @@ SwitchToTitle::
|
||||||
; Install the event loop handlers.
|
; Install the event loop handlers.
|
||||||
ld a, 0
|
ld a, 0
|
||||||
ldh [hGameState], a
|
ldh [hGameState], a
|
||||||
|
ld [wSelected], a
|
||||||
|
|
||||||
; And turn the LCD back on before we start.
|
; And turn the LCD back on before we start.
|
||||||
ld a, LCDCF_ON | LCDCF_BGON | LCDCF_BLK01
|
ld a, LCDCF_ON | LCDCF_BGON | LCDCF_BLK01
|
||||||
|
@ -89,22 +94,9 @@ SwitchToTitle::
|
||||||
|
|
||||||
|
|
||||||
TitleEventLoopHandler::
|
TitleEventLoopHandler::
|
||||||
; Increment mode?
|
|
||||||
ldh a, [hSelectState]
|
|
||||||
cp a, 1
|
|
||||||
jr nz, :+
|
|
||||||
ldh a, [hSimulationMode]
|
|
||||||
inc a
|
|
||||||
cp a, 8
|
|
||||||
jr nz, .write
|
|
||||||
xor a, a
|
|
||||||
.write
|
|
||||||
ldh [hSimulationMode], a
|
|
||||||
ld [rSimulationMode], a
|
|
||||||
jp EventLoopPostHandler
|
|
||||||
|
|
||||||
; Start game?
|
; Start game?
|
||||||
: ldh a, [hStartState]
|
.abstart
|
||||||
|
ldh a, [hStartState]
|
||||||
ld b, a
|
ld b, a
|
||||||
ldh a, [hAState]
|
ldh a, [hAState]
|
||||||
ld c, a
|
ld c, a
|
||||||
|
@ -112,37 +104,149 @@ TitleEventLoopHandler::
|
||||||
or a, b
|
or a, b
|
||||||
or a, c
|
or a, c
|
||||||
cp a, 1
|
cp a, 1
|
||||||
jr nz, :+
|
jr nz, .up
|
||||||
call SwitchToGameplay
|
call SwitchToGameplay
|
||||||
jp EventLoopPostHandler
|
jp EventLoopPostHandler
|
||||||
|
|
||||||
; Toggle A/B?
|
; Change menu selection?
|
||||||
: ldh a, [hLeftState]
|
.up
|
||||||
ld b, a
|
ldh a, [hUpState]
|
||||||
|
cp a, 1
|
||||||
|
jr nz, .down
|
||||||
|
ld a, [wSelected]
|
||||||
|
cp a, 0
|
||||||
|
jr z, :+
|
||||||
|
dec a
|
||||||
|
ld [wSelected], a
|
||||||
|
jp EventLoopPostHandler
|
||||||
|
: ld a, TITLE_OPTIONS-1
|
||||||
|
ld [wSelected], a
|
||||||
|
jp EventLoopPostHandler
|
||||||
|
|
||||||
|
.down
|
||||||
|
ldh a, [hDownState]
|
||||||
|
cp a, 1
|
||||||
|
jr nz, .left
|
||||||
|
ld a, [wSelected]
|
||||||
|
cp a, TITLE_OPTIONS-1
|
||||||
|
jr z, :+
|
||||||
|
inc a
|
||||||
|
ld [wSelected], a
|
||||||
|
jp EventLoopPostHandler
|
||||||
|
: xor a, a
|
||||||
|
ld [wSelected], a
|
||||||
|
jp EventLoopPostHandler
|
||||||
|
|
||||||
|
.left
|
||||||
|
ldh a, [hLeftState]
|
||||||
|
cp a, 1
|
||||||
|
jr nz, .right
|
||||||
|
jp DecrementOption
|
||||||
|
|
||||||
|
.right
|
||||||
ldh a, [hRightState]
|
ldh a, [hRightState]
|
||||||
or a, b
|
|
||||||
cp a, 1
|
cp a, 1
|
||||||
jr nz, :+
|
jr nz, .done
|
||||||
ldh a, [hSwapAB]
|
jp IncrementOption
|
||||||
cpl
|
|
||||||
ldh [hSwapAB], a
|
.done
|
||||||
ld [rSwapAB], a
|
|
||||||
jp EventLoopPostHandler
|
jp EventLoopPostHandler
|
||||||
|
|
||||||
; Start level up?
|
DecrementOption:
|
||||||
: ldh a, [hUpState]
|
.opt0
|
||||||
cp a, 1
|
ld a, [wSelected]
|
||||||
jr nz, :+
|
cp a, 0
|
||||||
jr IncrementLevel
|
jr nz, .opt1
|
||||||
|
ld a, [wSwapABState]
|
||||||
|
cp a, 0
|
||||||
|
jr z, :+
|
||||||
|
dec a
|
||||||
|
ld [wSwapABState], a
|
||||||
|
ld [rSwapABState], a
|
||||||
|
jp EventLoopPostHandler
|
||||||
|
: ld a, BUTTON_MODE_COUNT-1
|
||||||
|
ld [wSwapABState], a
|
||||||
|
ld [rSwapABState], a
|
||||||
jp EventLoopPostHandler
|
jp EventLoopPostHandler
|
||||||
|
|
||||||
; Start level down?
|
.opt1
|
||||||
: ldh a, [hDownState]
|
|
||||||
cp a, 1
|
cp a, 1
|
||||||
jr nz, :+
|
jr nz, .opt2
|
||||||
|
ld a, [wRNGModeState]
|
||||||
|
cp a, 0
|
||||||
|
jr z, :+
|
||||||
|
dec a
|
||||||
|
ld [wRNGModeState], a
|
||||||
|
ld [rRNGModeState], a
|
||||||
|
jp EventLoopPostHandler
|
||||||
|
: ld a, RNG_MODE_COUNT-1
|
||||||
|
ld [wRNGModeState], a
|
||||||
|
ld [rRNGModeState], a
|
||||||
|
jp EventLoopPostHandler
|
||||||
|
|
||||||
|
.opt2
|
||||||
|
cp a, 2
|
||||||
|
jr nz, .opt3
|
||||||
|
ld a, [wRotModeState]
|
||||||
|
cp a, 0
|
||||||
|
jr z, :+
|
||||||
|
dec a
|
||||||
|
ld [wRotModeState], a
|
||||||
|
ld [rRotModeState], a
|
||||||
|
jp EventLoopPostHandler
|
||||||
|
: ld a, ROT_MODE_COUNT-1
|
||||||
|
ld [wRotModeState], a
|
||||||
|
ld [rRotModeState], a
|
||||||
|
jp EventLoopPostHandler
|
||||||
|
|
||||||
|
.opt3
|
||||||
|
cp a, 3
|
||||||
|
jr nz, .opt4
|
||||||
|
ld a, [wDropModeState]
|
||||||
|
cp a, 0
|
||||||
|
jr z, :+
|
||||||
|
dec a
|
||||||
|
ld [wDropModeState], a
|
||||||
|
ld [rDropModeState], a
|
||||||
|
jp EventLoopPostHandler
|
||||||
|
: ld a, DROP_MODE_COUNT-1
|
||||||
|
ld [wDropModeState], a
|
||||||
|
ld [rDropModeState], a
|
||||||
|
jp EventLoopPostHandler
|
||||||
|
|
||||||
|
.opt4
|
||||||
|
cp a, 4
|
||||||
|
jr nz, .opt5
|
||||||
|
ld a, [wSpeedCurveState]
|
||||||
|
cp a, 0
|
||||||
|
jr z, :+
|
||||||
|
dec a
|
||||||
|
ld [wSpeedCurveState], a
|
||||||
|
ld [rSpeedCurveState], a
|
||||||
|
jp EventLoopPostHandler
|
||||||
|
: ld a, SCURVE_COUNT-1
|
||||||
|
ld [wSpeedCurveState], a
|
||||||
|
ld [rSpeedCurveState], a
|
||||||
|
jp EventLoopPostHandler
|
||||||
|
|
||||||
|
.opt5
|
||||||
|
cp a, 5
|
||||||
|
jr nz, .opt6
|
||||||
|
ld a, [wAlways20GState]
|
||||||
|
cp a, 0
|
||||||
|
jr z, :+
|
||||||
|
dec a
|
||||||
|
ld [wAlways20GState], a
|
||||||
|
ld [rAlways20GState], a
|
||||||
|
jp EventLoopPostHandler
|
||||||
|
: ld a, HIG_MODE_COUNT-1
|
||||||
|
ld [wAlways20GState], a
|
||||||
|
ld [rAlways20GState], a
|
||||||
|
jp EventLoopPostHandler
|
||||||
|
|
||||||
|
.opt6
|
||||||
jr DecrementLevel
|
jr DecrementLevel
|
||||||
: jp EventLoopPostHandler
|
jp EventLoopPostHandler
|
||||||
|
|
||||||
|
|
||||||
DecrementLevel:
|
DecrementLevel:
|
||||||
; Decrement
|
; Decrement
|
||||||
|
@ -156,7 +260,104 @@ DecrementLevel:
|
||||||
ldh [hStartSpeed], a
|
ldh [hStartSpeed], a
|
||||||
ld a, h
|
ld a, h
|
||||||
ldh [hStartSpeed+1], a
|
ldh [hStartSpeed+1], a
|
||||||
jr CheckLevelRange
|
jp CheckLevelRange
|
||||||
|
|
||||||
|
|
||||||
|
IncrementOption:
|
||||||
|
.opt0
|
||||||
|
ld a, [wSelected]
|
||||||
|
cp a, 0
|
||||||
|
jr nz, .opt1
|
||||||
|
ld a, [wSwapABState]
|
||||||
|
cp a, BUTTON_MODE_COUNT-1
|
||||||
|
jr z, :+
|
||||||
|
inc a
|
||||||
|
ld [wSwapABState], a
|
||||||
|
ld [rSwapABState], a
|
||||||
|
jp EventLoopPostHandler
|
||||||
|
: xor a, a
|
||||||
|
ld [wSwapABState], a
|
||||||
|
ld [rSwapABState], a
|
||||||
|
jp EventLoopPostHandler
|
||||||
|
|
||||||
|
.opt1
|
||||||
|
cp a, 1
|
||||||
|
jr nz, .opt2
|
||||||
|
ld a, [wRNGModeState]
|
||||||
|
cp a, RNG_MODE_COUNT-1
|
||||||
|
jr z, :+
|
||||||
|
inc a
|
||||||
|
ld [wRNGModeState], a
|
||||||
|
ld [rRNGModeState], a
|
||||||
|
jp EventLoopPostHandler
|
||||||
|
: xor a, a
|
||||||
|
ld [wRNGModeState], a
|
||||||
|
ld [rRNGModeState], a
|
||||||
|
jp EventLoopPostHandler
|
||||||
|
|
||||||
|
.opt2
|
||||||
|
cp a, 2
|
||||||
|
jr nz, .opt3
|
||||||
|
ld a, [wRotModeState]
|
||||||
|
cp a, ROT_MODE_COUNT-1
|
||||||
|
jr z, :+
|
||||||
|
inc a
|
||||||
|
ld [wRotModeState], a
|
||||||
|
ld [rRotModeState], a
|
||||||
|
jp EventLoopPostHandler
|
||||||
|
: xor a, a
|
||||||
|
ld [wRotModeState], a
|
||||||
|
ld [rRotModeState], a
|
||||||
|
jp EventLoopPostHandler
|
||||||
|
|
||||||
|
.opt3
|
||||||
|
cp a, 3
|
||||||
|
jr nz, .opt4
|
||||||
|
ld a, [wDropModeState]
|
||||||
|
cp a, DROP_MODE_COUNT-1
|
||||||
|
jr z, :+
|
||||||
|
inc a
|
||||||
|
ld [wDropModeState], a
|
||||||
|
ld [rDropModeState], a
|
||||||
|
jp EventLoopPostHandler
|
||||||
|
: xor a, a
|
||||||
|
ld [wDropModeState], a
|
||||||
|
ld [rDropModeState], a
|
||||||
|
jp EventLoopPostHandler
|
||||||
|
|
||||||
|
.opt4
|
||||||
|
cp a, 4
|
||||||
|
jr nz, .opt5
|
||||||
|
ld a, [wSpeedCurveState]
|
||||||
|
cp a, SCURVE_COUNT-1
|
||||||
|
jr z, :+
|
||||||
|
inc a
|
||||||
|
ld [wSpeedCurveState], a
|
||||||
|
ld [rSpeedCurveState], a
|
||||||
|
jp EventLoopPostHandler
|
||||||
|
: xor a, a
|
||||||
|
ld [wSpeedCurveState], a
|
||||||
|
ld [rSpeedCurveState], a
|
||||||
|
jp EventLoopPostHandler
|
||||||
|
|
||||||
|
.opt5
|
||||||
|
cp a, 5
|
||||||
|
jr nz, .opt6
|
||||||
|
ld a, [wAlways20GState]
|
||||||
|
cp a, HIG_MODE_COUNT-1
|
||||||
|
jr z, :+
|
||||||
|
inc a
|
||||||
|
ld [wAlways20GState], a
|
||||||
|
ld [rAlways20GState], a
|
||||||
|
jp EventLoopPostHandler
|
||||||
|
: xor a, a
|
||||||
|
ld [wAlways20GState], a
|
||||||
|
ld [rAlways20GState], a
|
||||||
|
jp EventLoopPostHandler
|
||||||
|
|
||||||
|
.opt6
|
||||||
|
jr IncrementLevel
|
||||||
|
jp EventLoopPostHandler
|
||||||
|
|
||||||
IncrementLevel:
|
IncrementLevel:
|
||||||
; Increment
|
; Increment
|
||||||
|
@ -172,7 +373,6 @@ IncrementLevel:
|
||||||
ldh [hStartSpeed+1], a
|
ldh [hStartSpeed+1], a
|
||||||
jr CheckLevelRange
|
jr CheckLevelRange
|
||||||
|
|
||||||
|
|
||||||
CheckLevelRange:
|
CheckLevelRange:
|
||||||
; At end?
|
; At end?
|
||||||
ld bc, sSpeedCurveEnd
|
ld bc, sSpeedCurveEnd
|
||||||
|
@ -207,88 +407,188 @@ CheckLevelRange:
|
||||||
|
|
||||||
|
|
||||||
TitleVBlankHandler::
|
TitleVBlankHandler::
|
||||||
; Draw level.
|
ld a, TILE_UNSELECTED
|
||||||
ldh a, [hStartSpeed]
|
ld hl, TITLE_OPTION_0
|
||||||
ld l, a
|
ld [hl], a
|
||||||
ldh a, [hStartSpeed+1]
|
ld hl, TITLE_OPTION_1
|
||||||
ld h, a
|
ld [hl], a
|
||||||
ld a, [hl]
|
ld hl, TITLE_OPTION_2
|
||||||
swap a
|
ld [hl], a
|
||||||
and a, $0F
|
ld hl, TITLE_OPTION_3
|
||||||
ld b, a
|
ld [hl], a
|
||||||
ld a, TILE_0
|
ld hl, TITLE_OPTION_4
|
||||||
add a, b
|
ld [hl], a
|
||||||
ld hl, TITLE_LEVEL+2
|
ld hl, TITLE_OPTION_5
|
||||||
|
ld [hl], a
|
||||||
|
ld hl, TITLE_OPTION_6
|
||||||
ld [hl], a
|
ld [hl], a
|
||||||
|
|
||||||
ldh a, [hStartSpeed]
|
ld a, [wSelected]
|
||||||
ld l, a
|
ld hl, TITLE_OPTION_0
|
||||||
ldh a, [hStartSpeed+1]
|
|
||||||
ld h, a
|
|
||||||
ld a, [hl]
|
|
||||||
and a, $0F
|
|
||||||
ld b, a
|
|
||||||
ld a, TILE_0
|
|
||||||
add a, b
|
|
||||||
ld hl, TITLE_LEVEL+3
|
|
||||||
ld [hl], a
|
|
||||||
|
|
||||||
ldh a, [hStartSpeed]
|
|
||||||
ld l, a
|
|
||||||
ldh a, [hStartSpeed+1]
|
|
||||||
ld h, a
|
|
||||||
inc hl
|
|
||||||
ld a, [hl]
|
|
||||||
swap a
|
|
||||||
and a, $0F
|
|
||||||
ld b, a
|
|
||||||
ld a, TILE_0
|
|
||||||
add a, b
|
|
||||||
ld hl, TITLE_LEVEL+0
|
|
||||||
ld [hl], a
|
|
||||||
|
|
||||||
ldh a, [hStartSpeed]
|
|
||||||
ld l, a
|
|
||||||
ldh a, [hStartSpeed+1]
|
|
||||||
ld h, a
|
|
||||||
inc hl
|
|
||||||
ld a, [hl]
|
|
||||||
and a, $0F
|
|
||||||
ld b, a
|
|
||||||
ld a, TILE_0
|
|
||||||
add a, b
|
|
||||||
ld hl, TITLE_LEVEL+1
|
|
||||||
ld [hl], a
|
|
||||||
|
|
||||||
; Draw Mode
|
|
||||||
ld hl, TITLE_MODE
|
|
||||||
ldh a, [hSimulationMode]
|
|
||||||
sla a
|
|
||||||
add a, TILE_MODE_0
|
|
||||||
ld [hl+], a
|
|
||||||
inc a
|
|
||||||
ld [hl], a
|
|
||||||
|
|
||||||
; Draw A/B
|
|
||||||
ldh a, [hSwapAB]
|
|
||||||
cp a, 0
|
cp a, 0
|
||||||
jr nz, :+
|
jr z, :+
|
||||||
ld hl, TITLE_A
|
ld hl, TITLE_OPTION_1
|
||||||
ld a, TILE_A
|
cp a, 1
|
||||||
ld [hl+], a
|
jr z, :+
|
||||||
inc hl
|
ld hl, TITLE_OPTION_2
|
||||||
inc a
|
cp a, 2
|
||||||
ld [hl], a
|
jr z, :+
|
||||||
wait_vblank_end
|
ld hl, TITLE_OPTION_3
|
||||||
jp EventLoop
|
cp a, 3
|
||||||
|
jr z, :+
|
||||||
|
ld hl, TITLE_OPTION_4
|
||||||
|
cp a, 4
|
||||||
|
jr z, :+
|
||||||
|
ld hl, TITLE_OPTION_5
|
||||||
|
cp a, 5
|
||||||
|
jr z, :+
|
||||||
|
ld hl, TITLE_OPTION_6
|
||||||
|
|
||||||
: ld hl, TITLE_A
|
: ld a, TILE_SELECTED
|
||||||
ld a, TILE_B
|
ld [hl], a
|
||||||
ld [hl+], a
|
|
||||||
inc hl
|
; Draw option 0.
|
||||||
dec a
|
xor a, a
|
||||||
|
ld b, a
|
||||||
|
ld a, [wSwapABState]
|
||||||
|
rlc a
|
||||||
|
rlc a
|
||||||
|
ld c, a
|
||||||
|
ld hl, sOption0
|
||||||
|
add hl, bc
|
||||||
|
ld d, h
|
||||||
|
ld e, l
|
||||||
|
ld hl, TITLE_OPTION_0+TITLE_OPTION_OFFSET
|
||||||
|
ld bc, 4
|
||||||
|
call UnsafeMemCopy
|
||||||
|
|
||||||
|
; Draw option 1.
|
||||||
|
xor a, a
|
||||||
|
ld b, a
|
||||||
|
ld a, [wRNGModeState]
|
||||||
|
rlc a
|
||||||
|
rlc a
|
||||||
|
ld c, a
|
||||||
|
ld hl, sOption1
|
||||||
|
add hl, bc
|
||||||
|
ld d, h
|
||||||
|
ld e, l
|
||||||
|
ld hl, TITLE_OPTION_1+TITLE_OPTION_OFFSET
|
||||||
|
ld bc, 4
|
||||||
|
call UnsafeMemCopy
|
||||||
|
|
||||||
|
; Draw option 2.
|
||||||
|
xor a, a
|
||||||
|
ld b, a
|
||||||
|
ld a, [rRotModeState]
|
||||||
|
rlc a
|
||||||
|
rlc a
|
||||||
|
ld c, a
|
||||||
|
ld hl, sOption2
|
||||||
|
add hl, bc
|
||||||
|
ld d, h
|
||||||
|
ld e, l
|
||||||
|
ld hl, TITLE_OPTION_2+TITLE_OPTION_OFFSET
|
||||||
|
ld bc, 4
|
||||||
|
call UnsafeMemCopy
|
||||||
|
|
||||||
|
; Draw option 3.
|
||||||
|
xor a, a
|
||||||
|
ld b, a
|
||||||
|
ld a, [rDropModeState]
|
||||||
|
rlc a
|
||||||
|
rlc a
|
||||||
|
ld c, a
|
||||||
|
ld hl, sOption3
|
||||||
|
add hl, bc
|
||||||
|
ld d, h
|
||||||
|
ld e, l
|
||||||
|
ld hl, TITLE_OPTION_3+TITLE_OPTION_OFFSET
|
||||||
|
ld bc, 4
|
||||||
|
call UnsafeMemCopy
|
||||||
|
|
||||||
|
; Draw option 5.
|
||||||
|
xor a, a
|
||||||
|
ld b, a
|
||||||
|
ld a, [wSpeedCurveState]
|
||||||
|
rlc a
|
||||||
|
rlc a
|
||||||
|
ld c, a
|
||||||
|
ld hl, sOption4
|
||||||
|
add hl, bc
|
||||||
|
ld d, h
|
||||||
|
ld e, l
|
||||||
|
ld hl, TITLE_OPTION_4+TITLE_OPTION_OFFSET
|
||||||
|
ld bc, 4
|
||||||
|
call UnsafeMemCopy
|
||||||
|
|
||||||
|
; Draw option 5.
|
||||||
|
xor a, a
|
||||||
|
ld b, a
|
||||||
|
ld a, [wAlways20GState]
|
||||||
|
rlc a
|
||||||
|
rlc a
|
||||||
|
ld c, a
|
||||||
|
ld hl, sOption5
|
||||||
|
add hl, bc
|
||||||
|
ld d, h
|
||||||
|
ld e, l
|
||||||
|
ld hl, TITLE_OPTION_5+TITLE_OPTION_OFFSET
|
||||||
|
ld bc, 4
|
||||||
|
call UnsafeMemCopy
|
||||||
|
|
||||||
|
; Draw option 6.
|
||||||
|
ldh a, [hStartSpeed]
|
||||||
|
ld l, a
|
||||||
|
ldh a, [hStartSpeed+1]
|
||||||
|
ld h, a
|
||||||
|
ld a, [hl]
|
||||||
|
swap a
|
||||||
|
and a, $0F
|
||||||
|
ld b, a
|
||||||
|
ld a, TILE_0
|
||||||
|
add a, b
|
||||||
|
ld hl, TITLE_OPTION_6+TITLE_OPTION_OFFSET+2
|
||||||
|
ld [hl], a
|
||||||
|
|
||||||
|
ldh a, [hStartSpeed]
|
||||||
|
ld l, a
|
||||||
|
ldh a, [hStartSpeed+1]
|
||||||
|
ld h, a
|
||||||
|
ld a, [hl]
|
||||||
|
and a, $0F
|
||||||
|
ld b, a
|
||||||
|
ld a, TILE_0
|
||||||
|
add a, b
|
||||||
|
ld hl, TITLE_OPTION_6+TITLE_OPTION_OFFSET+3
|
||||||
|
ld [hl], a
|
||||||
|
|
||||||
|
ldh a, [hStartSpeed]
|
||||||
|
ld l, a
|
||||||
|
ldh a, [hStartSpeed+1]
|
||||||
|
ld h, a
|
||||||
|
inc hl
|
||||||
|
ld a, [hl]
|
||||||
|
swap a
|
||||||
|
and a, $0F
|
||||||
|
ld b, a
|
||||||
|
ld a, TILE_0
|
||||||
|
add a, b
|
||||||
|
ld hl, TITLE_OPTION_6+TITLE_OPTION_OFFSET+0
|
||||||
|
ld [hl], a
|
||||||
|
|
||||||
|
ldh a, [hStartSpeed]
|
||||||
|
ld l, a
|
||||||
|
ldh a, [hStartSpeed+1]
|
||||||
|
ld h, a
|
||||||
|
inc hl
|
||||||
|
ld a, [hl]
|
||||||
|
and a, $0F
|
||||||
|
ld b, a
|
||||||
|
ld a, TILE_0
|
||||||
|
add a, b
|
||||||
|
ld hl, TITLE_OPTION_6+TITLE_OPTION_OFFSET+1
|
||||||
ld [hl], a
|
ld [hl], a
|
||||||
wait_vblank_end
|
|
||||||
jp EventLoop
|
jp EventLoop
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue