Slightly improve game over and also add modes, removing the RNG setting instead.
This commit is contained in:
		
							parent
							
								
									3116bccde4
								
							
						
					
					
						commit
						f1f33b27d3
					
				
							
								
								
									
										
											BIN
										
									
								
								DMGTRIS.GB
								
								
								
								
							
							
						
						
									
										
											BIN
										
									
								
								DMGTRIS.GB
								
								
								
								
							
										
											Binary file not shown.
										
									
								
							|  | @ -11,6 +11,13 @@ The Randomizer uses a TGM2-style 4-history randomizer preloaded with SSZZ, and w | ||||||
| 
 | 
 | ||||||
| The game itself runs at a constant 60fps as well as at the traditional 20 row visible grid. | The game itself runs at a constant 60fps as well as at the traditional 20 row visible grid. | ||||||
| 
 | 
 | ||||||
|  | There are five available game modes: | ||||||
|  | - TGM1: 4 history, 4 rerolls, no sonic drop, never start with O, S or Z. | ||||||
|  | - TGM2: 4 history, 6 rerolls, sonic drop, never start with O, S or Z. | ||||||
|  | - TGM3: 6 history, 6 rerolls, sonic drop, never start with O, S or Z. (Note, not the actual 35-bag as used in TGM3, and floor kicks are not implemented (yet) either.) | ||||||
|  | - HELL: No history, no rerolls, no sonic drop, never start with O, S or Z. | ||||||
|  | - EASY: 6 history, 256 rerolls, sonic drop, never start with O, S or Z. | ||||||
|  | 
 | ||||||
| 
 | 
 | ||||||
| ## Playing | ## Playing | ||||||
| You can build the game yourself, or use the binary [here](https://git.villadelfia.org/villadelfia/dmgtris/raw/branch/master/DMGTRIS.GB) or [here](https://github.com/Villadelfia/DMGTRIS/raw/master/DMGTRIS.GB). | You can build the game yourself, or use the binary [here](https://git.villadelfia.org/villadelfia/dmgtris/raw/branch/master/DMGTRIS.GB) or [here](https://github.com/Villadelfia/DMGTRIS/raw/master/DMGTRIS.GB). | ||||||
|  | @ -25,7 +32,7 @@ Please do not try running it on older emulators such as VBA, since this game use | ||||||
| - A/B/Start — Start the game | - A/B/Start — Start the game | ||||||
| - Left/Right — Switch A/B rotation direction | - Left/Right — Switch A/B rotation direction | ||||||
| - Up/Down — Select starting level | - Up/Down — Select starting level | ||||||
| - Select — Select amount of times a piece will be rerolled if it was given to you in the previous 4 pieces. TGM2 uses 6 for this value, TGM1 uses 4 for this value. You can set this to 0 (pure RNG except you'll never start with O, S, or Z), to 15 (F. Basically never get duplicates.) | - Select — Select game mode | ||||||
| 
 | 
 | ||||||
| ### Gameplay | ### Gameplay | ||||||
| - A — Rotate 1 | - A — Rotate 1 | ||||||
|  |  | ||||||
|  | @ -475,6 +475,25 @@ CanPieceFit: | ||||||
|     ret |     ret | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | ForceSpawnPiece:: | ||||||
|  |     call SetPieceData | ||||||
|  |     call SetPieceDataOffset | ||||||
|  |     ldh a, [hCurrentPieceY] | ||||||
|  |     ld b, a | ||||||
|  |     ldh a, [hCurrentPieceX] | ||||||
|  |     call XYToFieldPtr | ||||||
|  |     ld d, h | ||||||
|  |     ld e, l | ||||||
|  |     call GetPieceData | ||||||
|  |     ld a, GAME_OVER_OTHER | ||||||
|  |     ld b, a | ||||||
|  |     push hl | ||||||
|  |     push de | ||||||
|  |     pop hl | ||||||
|  |     pop de | ||||||
|  |     jp DrawPiece | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
| TrySpawnPiece:: | TrySpawnPiece:: | ||||||
|     ; Always reset these for a new piece. |     ; Always reset these for a new piece. | ||||||
|     ldh a, [hCurrentLockDelay] |     ldh a, [hCurrentLockDelay] | ||||||
|  | @ -678,7 +697,12 @@ FieldProcess:: | ||||||
|     ; How deep can we go? |     ; How deep can we go? | ||||||
| :   call FindMaxG | :   call FindMaxG | ||||||
| 
 | 
 | ||||||
|     ; If we press up, we want to do a sonic drop. |     ; If we press up, we want to do a sonic drop, but not in TGM1 or HELL mode. | ||||||
|  |     ldh a, [hSimulationMode] | ||||||
|  |     cp a, MODE_TGM1 | ||||||
|  |     jr z, :+ | ||||||
|  |     cp a, MODE_HELL | ||||||
|  |     jr z, :+ | ||||||
|     ldh a, [hUpState] |     ldh a, [hUpState] | ||||||
|     cp a, 1 |     cp a, 1 | ||||||
|     jr nz, :+ |     jr nz, :+ | ||||||
|  |  | ||||||
|  | @ -111,15 +111,16 @@ DEF PALETTE_LIGHTER_3   EQU %00000000 | ||||||
| DEF TITLE_A             EQU $99CD | DEF TITLE_A             EQU $99CD | ||||||
| DEF TITLE_B             EQU $99CF | DEF TITLE_B             EQU $99CF | ||||||
| DEF TITLE_LEVEL         EQU $996C | DEF TITLE_LEVEL         EQU $996C | ||||||
| DEF TITLE_ROLLS         EQU $9A2F | DEF TITLE_MODE          EQU $9A2E | ||||||
| DEF FIELD_RNGTELL       EQU $9812 | DEF FIELD_MODE          EQU $9811 | ||||||
| DEF FIELD_TOP_LEFT      EQU $9800+1 | DEF FIELD_TOP_LEFT      EQU $9800+1 | ||||||
| DEF EASTER_0            EQU $9885 | DEF EASTER_0            EQU $9885 | ||||||
| DEF EASTER_1            EQU $98A5 | DEF EASTER_1            EQU $98A5 | ||||||
| DEF TILE_FIELD_EMPTY    EQU 4 | DEF TILE_FIELD_EMPTY    EQU 4 | ||||||
| DEF TILE_PIECE_0        EQU 10 | DEF TILE_PIECE_0        EQU 10 | ||||||
| DEF TILE_0              EQU 66 | DEF TILE_0              EQU 66 | ||||||
| DEF TILE_0_FAINT        EQU 196 | DEF TILE_MODE_FAINT_0   EQU 196 | ||||||
|  | DEF TILE_MODE_0         EQU 234 | ||||||
| DEF TILE_CLEARING       EQU 124 | DEF TILE_CLEARING       EQU 124 | ||||||
| DEF TILE_GHOST          EQU 125 | DEF TILE_GHOST          EQU 125 | ||||||
| DEF TILE_A              EQU 76 | DEF TILE_A              EQU 76 | ||||||
|  | @ -158,6 +159,11 @@ 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 MODE_TGM3           EQU 2 | ||||||
|  | DEF MODE_HELL           EQU 3 | ||||||
|  | DEF MODE_EASY           EQU 4 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| ENDC | ENDC | ||||||
|  |  | ||||||
|  | @ -29,6 +29,7 @@ SECTION "High Globals", HRAM | ||||||
| hGameState:: ds 1 | hGameState:: ds 1 | ||||||
| hSwapAB:: ds 1 | hSwapAB:: ds 1 | ||||||
| hInitialA:: ds 1 | hInitialA:: ds 1 | ||||||
|  | hSimulationMode:: ds 1 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| SECTION "Stack", WRAM0 | SECTION "Stack", WRAM0 | ||||||
|  | @ -64,13 +65,13 @@ Main:: | ||||||
|     ; Zero out the ram where needed. |     ; Zero out the ram where needed. | ||||||
|     xor a, a |     xor a, a | ||||||
|     ldh [hSwapAB], a |     ldh [hSwapAB], a | ||||||
|  |     ld a, MODE_TGM2 | ||||||
|  |     ldh [hSimulationMode], a | ||||||
|     ld hl, sSpeedCurve |     ld hl, sSpeedCurve | ||||||
|     ld a, l |     ld a, l | ||||||
|     ldh [hStartSpeed], a |     ldh [hStartSpeed], a | ||||||
|     ld a, h |     ld a, h | ||||||
|     ldh [hStartSpeed+1], a |     ldh [hStartSpeed+1], a | ||||||
|     ld a, 6 |  | ||||||
|     ldh [hRNGRerolls], a |  | ||||||
|     call TimeInit |     call TimeInit | ||||||
|     call IntrInit |     call IntrInit | ||||||
|     call InputInit |     call InputInit | ||||||
|  |  | ||||||
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							|  | @ -282,30 +282,30 @@ Tiles:: | ||||||
|     DB $C0,$C0,$C0,$C0,$F0,$F0,$00,$00 |     DB $C0,$C0,$C0,$C0,$F0,$F0,$00,$00 | ||||||
|     DB $0F,$0F,$03,$03,$03,$03,$03,$03 |     DB $0F,$0F,$03,$03,$03,$03,$03,$03 | ||||||
|     DB $03,$03,$03,$03,$0F,$0F,$00,$00 |     DB $03,$03,$03,$03,$0F,$0F,$00,$00 | ||||||
|     DB $FF,$00,$FF,$00,$FF,$00,$FF,$00 |     DB $00,$FF,$00,$FF,$00,$FF,$00,$FF | ||||||
|     DB $FF,$00,$FF,$00,$FF,$00,$00,$00 |     DB $00,$FF,$00,$FF,$00,$FF,$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 $FF,$7C,$FF,$C6,$FF,$C0,$FF,$CE |     DB $7C,$FF,$C6,$FF,$C0,$FF,$CE,$FF | ||||||
|     DB $FF,$C6,$FF,$C6,$FF,$7C,$00,$00 |     DB $C6,$FF,$C6,$FF,$7C,$FF,$00,$00 | ||||||
|     DB $FF,$38,$FF,$6C,$FF,$C6,$FF,$FE |     DB $38,$FF,$6C,$FF,$C6,$FF,$FE,$FF | ||||||
|     DB $FF,$C6,$FF,$C6,$FF,$C6,$00,$00 |     DB $C6,$FF,$C6,$FF,$C6,$FF,$00,$00 | ||||||
|     DB $FF,$C6,$FF,$EE,$FF,$FE,$FF,$D6 |     DB $C6,$FF,$EE,$FF,$FE,$FF,$D6,$FF | ||||||
|     DB $FF,$C6,$FF,$C6,$FF,$C6,$00,$00 |     DB $C6,$FF,$C6,$FF,$C6,$FF,$00,$00 | ||||||
|     DB $FF,$FE,$FF,$C0,$FF,$C0,$FF,$F8 |     DB $FE,$FF,$C0,$FF,$C0,$FF,$F8,$FF | ||||||
|     DB $FF,$C0,$FF,$C0,$FF,$FE,$00,$00 |     DB $C0,$FF,$C0,$FF,$FE,$FF,$00,$00 | ||||||
|     DB $FF,$00,$FF,$00,$FF,$00,$FF,$00 |     DB $00,$FF,$00,$FF,$00,$FF,$00,$FF | ||||||
|     DB $FF,$00,$FF,$00,$FF,$00,$00,$00 |     DB $00,$FF,$00,$FF,$00,$FF,$00,$00 | ||||||
|     DB $FF,$7C,$FF,$C6,$FF,$C6,$FF,$C6 |     DB $7C,$FF,$C6,$FF,$C6,$FF,$C6,$FF | ||||||
|     DB $FF,$C6,$FF,$C6,$FF,$7C,$00,$00 |     DB $C6,$FF,$C6,$FF,$7C,$FF,$00,$00 | ||||||
|     DB $FF,$C6,$FF,$C6,$FF,$6C,$FF,$6C |     DB $C6,$FF,$C6,$FF,$6C,$FF,$6C,$FF | ||||||
|     DB $FF,$6C,$FF,$38,$FF,$38,$00,$00 |     DB $6C,$FF,$38,$FF,$38,$FF,$00,$00 | ||||||
|     DB $FF,$FE,$FF,$C0,$FF,$C0,$FF,$F8 |     DB $FE,$FF,$C0,$FF,$C0,$FF,$F8,$FF | ||||||
|     DB $FF,$C0,$FF,$C0,$FF,$FE,$00,$00 |     DB $C0,$FF,$C0,$FF,$FE,$FF,$00,$00 | ||||||
|     DB $FF,$FC,$FF,$C6,$FF,$C6,$FF,$FC |     DB $FC,$FF,$C6,$FF,$C6,$FF,$FC,$FF | ||||||
|     DB $FF,$F8,$FF,$DC,$FF,$CE,$00,$00 |     DB $F8,$FF,$DC,$FF,$CE,$FF,$00,$00 | ||||||
|     DB $FF,$18,$FF,$3C,$FF,$3C,$FF,$18 |     DB $18,$FF,$3C,$FF,$3C,$FF,$18,$FF | ||||||
|     DB $FF,$18,$FF,$00,$FF,$18,$00,$00 |     DB $18,$FF,$00,$FF,$18,$FF,$00,$00 | ||||||
|     DB $7C,$7C,$C6,$C6,$C0,$C0,$CE,$CE |     DB $7C,$7C,$C6,$C6,$C0,$C0,$CE,$CE | ||||||
|     DB $C6,$C6,$C6,$C6,$7C,$7C,$00,$00 |     DB $C6,$C6,$C6,$C6,$7C,$7C,$00,$00 | ||||||
|     DB $38,$38,$6C,$6C,$C6,$C6,$FE,$FE |     DB $38,$38,$6C,$6C,$C6,$C6,$FE,$FE | ||||||
|  | @ -326,26 +326,26 @@ Tiles:: | ||||||
|     DB $F8,$F8,$DC,$DC,$CE,$CE,$00,$00 |     DB $F8,$F8,$DC,$DC,$CE,$CE,$00,$00 | ||||||
|     DB $18,$18,$3C,$3C,$3C,$3C,$18,$18 |     DB $18,$18,$3C,$3C,$3C,$3C,$18,$18 | ||||||
|     DB $18,$18,$00,$00,$18,$18,$00,$00 |     DB $18,$18,$00,$00,$18,$18,$00,$00 | ||||||
|     DB $FF,$00,$FF,$00,$FF,$00,$FF,$00 |     DB $00,$FF,$00,$FF,$00,$FF,$00,$FF | ||||||
|     DB $FF,$00,$FF,$00,$FF,$00,$00,$00 |     DB $00,$FF,$00,$FF,$00,$FF,$00,$00 | ||||||
|     DB $FF,$FC,$FF,$C6,$FF,$C6,$FF,$FC |     DB $FC,$FF,$C6,$FF,$C6,$FF,$FC,$FF | ||||||
|     DB $FF,$F8,$FF,$DC,$FF,$CE,$00,$00 |     DB $F8,$FF,$DC,$FF,$CE,$FF,$00,$00 | ||||||
|     DB $FF,$FE,$FF,$C0,$FF,$C0,$FF,$F8 |     DB $FE,$FF,$C0,$FF,$C0,$FF,$F8,$FF | ||||||
|     DB $FF,$C0,$FF,$C0,$FF,$FE,$00,$00 |     DB $C0,$FF,$C0,$FF,$FE,$FF,$00,$00 | ||||||
|     DB $FF,$FC,$FF,$30,$FF,$30,$FF,$30 |     DB $FC,$FF,$30,$FF,$30,$FF,$30,$FF | ||||||
|     DB $FF,$30,$FF,$30,$FF,$30,$00,$00 |     DB $30,$FF,$30,$FF,$30,$FF,$00,$00 | ||||||
|     DB $FF,$FC,$FF,$C6,$FF,$C6,$FF,$FC |     DB $FC,$FF,$C6,$FF,$C6,$FF,$FC,$FF | ||||||
|     DB $FF,$F8,$FF,$DC,$FF,$CE,$00,$00 |     DB $F8,$FF,$DC,$FF,$CE,$FF,$00,$00 | ||||||
|     DB $FF,$C6,$FF,$EE,$FF,$7C,$FF,$38 |     DB $C6,$FF,$EE,$FF,$7C,$FF,$38,$FF | ||||||
|     DB $FF,$70,$FF,$E0,$FF,$C0,$00,$00 |     DB $70,$FF,$E0,$FF,$C0,$FF,$00,$00 | ||||||
|     DB $FF,$F0,$FF,$C0,$FF,$C0,$FF,$C0 |     DB $F0,$FF,$C0,$FF,$C0,$FF,$C0,$FF | ||||||
|     DB $FF,$C0,$FF,$C0,$FF,$F0,$00,$00 |     DB $C0,$FF,$C0,$FF,$F0,$FF,$00,$00 | ||||||
|     DB $FF,$38,$FF,$6C,$FF,$C6,$FF,$FE |     DB $38,$FF,$6C,$FF,$C6,$FF,$FE,$FF | ||||||
|     DB $FF,$C6,$FF,$C6,$FF,$C6,$00,$00 |     DB $C6,$FF,$C6,$FF,$C6,$FF,$00,$00 | ||||||
|     DB $FF,$0F,$FF,$03,$FF,$03,$FF,$03 |     DB $0F,$FF,$03,$FF,$03,$FF,$03,$FF | ||||||
|     DB $FF,$03,$FF,$03,$FF,$0F,$00,$00 |     DB $03,$FF,$03,$FF,$0F,$FF,$00,$00 | ||||||
|     DB $FF,$00,$FF,$00,$FF,$00,$FF,$00 |     DB $00,$FF,$00,$FF,$00,$FF,$00,$FF | ||||||
|     DB $FF,$00,$FF,$00,$FF,$00,$00,$00 |     DB $00,$FF,$00,$FF,$00,$FF,$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 $FC,$FC,$C6,$C6,$C6,$C6,$FC,$FC |     DB $FC,$FC,$C6,$C6,$C6,$C6,$FC,$FC | ||||||
|  | @ -366,26 +366,26 @@ 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 $FF,$00,$FF,$00,$FF,$00,$FF,$00 |     DB $00,$FF,$00,$FF,$00,$FF,$00,$FF | ||||||
|     DB $FF,$00,$FF,$00,$FF,$00,$00,$00 |     DB $00,$FF,$00,$FF,$00,$FF,$00,$00 | ||||||
|     DB $FF,$7C,$FF,$C6,$FF,$C6,$FF,$C6 |     DB $7C,$FF,$C6,$FF,$C6,$FF,$C6,$FF | ||||||
|     DB $FF,$D6,$FF,$DE,$FF,$7C,$00,$00 |     DB $D6,$FF,$DE,$FF,$7C,$FF,$00,$00 | ||||||
|     DB $FF,$C6,$FF,$C6,$FF,$C6,$FF,$C6 |     DB $C6,$FF,$C6,$FF,$C6,$FF,$C6,$FF | ||||||
|     DB $FF,$C6,$FF,$C6,$FF,$7C,$00,$00 |     DB $C6,$FF,$C6,$FF,$7C,$FF,$00,$00 | ||||||
|     DB $FF,$18,$FF,$18,$FF,$18,$FF,$18 |     DB $18,$FF,$18,$FF,$18,$FF,$18,$FF | ||||||
|     DB $FF,$18,$FF,$18,$FF,$18,$00,$00 |     DB $18,$FF,$18,$FF,$18,$FF,$00,$00 | ||||||
|     DB $FF,$FC,$FF,$30,$FF,$30,$FF,$30 |     DB $FC,$FF,$30,$FF,$30,$FF,$30,$FF | ||||||
|     DB $FF,$30,$FF,$30,$FF,$30,$00,$00 |     DB $30,$FF,$30,$FF,$30,$FF,$00,$00 | ||||||
|     DB $FF,$00,$FF,$00,$FF,$00,$FF,$00 |     DB $00,$FF,$00,$FF,$00,$FF,$00,$FF | ||||||
|     DB $FF,$00,$FF,$00,$FF,$00,$00,$00 |     DB $00,$FF,$00,$FF,$00,$FF,$00,$00 | ||||||
|     DB $FF,$F0,$FF,$C0,$FF,$C0,$FF,$C0 |     DB $F0,$FF,$C0,$FF,$C0,$FF,$C0,$FF | ||||||
|     DB $FF,$C0,$FF,$C0,$FF,$F0,$00,$00 |     DB $C0,$FF,$C0,$FF,$F0,$FF,$00,$00 | ||||||
|     DB $FF,$FC,$FF,$C6,$FF,$C6,$FF,$FC |     DB $FC,$FF,$C6,$FF,$C6,$FF,$FC,$FF | ||||||
|     DB $FF,$C6,$FF,$C6,$FF,$FC,$00,$00 |     DB $C6,$FF,$C6,$FF,$FC,$FF,$00,$00 | ||||||
|     DB $FF,$0F,$FF,$03,$FF,$03,$FF,$03 |     DB $0F,$FF,$03,$FF,$03,$FF,$03,$FF | ||||||
|     DB $FF,$03,$FF,$03,$FF,$0F,$00,$00 |     DB $03,$FF,$03,$FF,$0F,$FF,$00,$00 | ||||||
|     DB $FF,$00,$FF,$00,$FF,$00,$FF,$00 |     DB $00,$FF,$00,$FF,$00,$FF,$00,$FF | ||||||
|     DB $FF,$00,$FF,$00,$FF,$00,$00,$00 |     DB $00,$FF,$00,$FF,$00,$FF,$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 $7C,$7C,$C6,$C6,$C6,$C6,$C6,$C6 |     DB $7C,$7C,$C6,$C6,$C6,$C6,$C6,$C6 | ||||||
|  | @ -412,38 +412,38 @@ Tiles:: | ||||||
|     DB $A2,$A2,$A2,$A2,$BB,$BB,$00,$00 |     DB $A2,$A2,$A2,$A2,$BB,$BB,$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,$80,$80,$00,$00 |     DB $00,$00,$00,$00,$80,$80,$00,$00 | ||||||
|     DB $07,$00,$05,$00,$05,$00,$05,$00 |     DB $00,$00,$EE,$00,$48,$00,$4A,$00 | ||||||
|     DB $07,$00,$00,$00,$00,$00,$00,$00 |     DB $4A,$00,$4E,$00,$00,$00,$00,$00 | ||||||
|     DB $02,$00,$06,$00,$02,$00,$02,$00 |     DB $00,$00,$A4,$00,$EC,$00,$A4,$00 | ||||||
|     DB $07,$00,$00,$00,$00,$00,$00,$00 |     DB $A4,$00,$AE,$00,$00,$00,$00,$00 | ||||||
|     DB $07,$00,$01,$00,$02,$00,$04,$00 |     DB $00,$00,$EE,$00,$48,$00,$4A,$00 | ||||||
|     DB $07,$00,$00,$00,$00,$00,$00,$00 |     DB $4A,$00,$4E,$00,$00,$00,$00,$00 | ||||||
|     DB $07,$00,$01,$00,$03,$00,$01,$00 |     DB $00,$00,$AC,$00,$E2,$00,$A4,$00 | ||||||
|     DB $07,$00,$00,$00,$00,$00,$00,$00 |     DB $A8,$00,$AE,$00,$00,$00,$00,$00 | ||||||
|     DB $05,$00,$05,$00,$07,$00,$01,$00 |     DB $00,$00,$EE,$00,$48,$00,$4A,$00 | ||||||
|     DB $01,$00,$00,$00,$00,$00,$00,$00 |     DB $4A,$00,$4E,$00,$00,$00,$00,$00 | ||||||
|     DB $07,$00,$04,$00,$07,$00,$01,$00 |     DB $00,$00,$AC,$00,$E2,$00,$A4,$00 | ||||||
|     DB $07,$00,$00,$00,$00,$00,$00,$00 |     DB $A2,$00,$AC,$00,$00,$00,$00,$00 | ||||||
|     DB $07,$00,$04,$00,$07,$00,$05,$00 |     DB $00,$00,$AE,$00,$A8,$00,$EE,$00 | ||||||
|     DB $07,$00,$00,$00,$00,$00,$00,$00 |     DB $A8,$00,$AE,$00,$00,$00,$00,$00 | ||||||
|     DB $07,$00,$01,$00,$02,$00,$02,$00 |     DB $00,$00,$88,$00,$88,$00,$88,$00 | ||||||
|     DB $02,$00,$00,$00,$00,$00,$00,$00 |     DB $88,$00,$EE,$00,$00,$00,$00,$00 | ||||||
|     DB $07,$00,$05,$00,$07,$00,$05,$00 |     DB $00,$00,$E4,$00,$8A,$00,$CE,$00 | ||||||
|     DB $07,$00,$00,$00,$00,$00,$00,$00 |     DB $8A,$00,$EA,$00,$00,$00,$00,$00 | ||||||
|     DB $07,$00,$05,$00,$07,$00,$01,$00 |     DB $00,$00,$6A,$00,$8A,$00,$44,$00 | ||||||
|     DB $07,$00,$00,$00,$00,$00,$00,$00 |     DB $24,$00,$C4,$00,$00,$00,$00,$00 | ||||||
|     DB $07,$00,$05,$00,$07,$00,$05,$00 |     DB $00,$00,$AA,$00,$AA,$00,$44,$00 | ||||||
|     DB $05,$00,$00,$00,$00,$00,$00,$00 |     DB $AA,$00,$AA,$00,$00,$00,$00,$00 | ||||||
|     DB $07,$00,$05,$00,$06,$00,$05,$00 |     DB $00,$00,$AA,$00,$AA,$00,$44,$00 | ||||||
|     DB $07,$00,$00,$00,$00,$00,$00,$00 |     DB $AA,$00,$AA,$00,$00,$00,$00,$00 | ||||||
|     DB $07,$00,$04,$00,$04,$00,$04,$00 |     DB $00,$00,$AA,$00,$AA,$00,$44,$00 | ||||||
|     DB $07,$00,$00,$00,$00,$00,$00,$00 |     DB $AA,$00,$AA,$00,$00,$00,$00,$00 | ||||||
|     DB $06,$00,$05,$00,$05,$00,$05,$00 |     DB $00,$00,$AA,$00,$AA,$00,$44,$00 | ||||||
|     DB $06,$00,$00,$00,$00,$00,$00,$00 |     DB $AA,$00,$AA,$00,$00,$00,$00,$00 | ||||||
|     DB $07,$00,$04,$00,$06,$00,$04,$00 |     DB $00,$00,$AA,$00,$AA,$00,$44,$00 | ||||||
|     DB $07,$00,$00,$00,$00,$00,$00,$00 |     DB $AA,$00,$AA,$00,$00,$00,$00,$00 | ||||||
|     DB $07,$00,$04,$00,$06,$00,$04,$00 |     DB $00,$00,$AA,$00,$AA,$00,$44,$00 | ||||||
|     DB $04,$00,$00,$00,$00,$00,$00,$00 |     DB $AA,$00,$AA,$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 +472,66 @@ 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,$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,$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,$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 $4A,$4A,$4E,$4E,$00,$00,$00,$00 | ||||||
|  |     DB $00,$00,$A4,$A4,$EC,$EC,$A4,$A4 | ||||||
|  |     DB $A4,$A4,$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,$E2,$E2,$A4,$A4 | ||||||
|  |     DB $A8,$A8,$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,$E2,$E2,$A4,$A4 | ||||||
|  |     DB $A2,$A2,$AC,$AC,$00,$00,$00,$00 | ||||||
|  |     DB $00,$00,$AE,$AE,$A8,$A8,$EE,$EE | ||||||
|  |     DB $A8,$A8,$AE,$AE,$00,$00,$00,$00 | ||||||
|  |     DB $00,$00,$88,$88,$88,$88,$88,$88 | ||||||
|  |     DB $88,$88,$EE,$EE,$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,$6A,$6A,$8A,$8A,$44,$44 | ||||||
|  |     DB $24,$24,$C4,$C4,$00,$00,$00,$00 | ||||||
|  |     DB $00,$00,$AA,$AA,$AA,$AA,$44,$44 | ||||||
|  |     DB $AA,$AA,$AA,$AA,$00,$00,$00,$00 | ||||||
|  |     DB $00,$00,$AA,$AA,$AA,$AA,$44,$44 | ||||||
|  |     DB $AA,$AA,$AA,$AA,$00,$00,$00,$00 | ||||||
|  |     DB $00,$00,$AA,$AA,$AA,$AA,$44,$44 | ||||||
|  |     DB $AA,$AA,$AA,$AA,$00,$00,$00,$00 | ||||||
|  |     DB $00,$00,$AA,$AA,$AA,$AA,$44,$44 | ||||||
|  |     DB $AA,$AA,$AA,$AA,$00,$00,$00,$00 | ||||||
|  |     DB $00,$00,$AA,$AA,$AA,$AA,$44,$44 | ||||||
|  |     DB $AA,$AA,$AA,$AA,$00,$00,$00,$00 | ||||||
|  |     DB $00,$00,$AA,$AA,$AA,$AA,$44,$44 | ||||||
|  |     DB $AA,$AA,$AA,$AA,$00,$00,$00,$00 | ||||||
|  |     DB $00,$00,$00,$00,$00,$00,$00,$00 | ||||||
|  |     DB $00,$00,$00,$00,$00,$00,$00,$00 | ||||||
|  |     DB $FF,$00,$FF,$00,$FF,$00,$FF,$00 | ||||||
|  |     DB $FF,$00,$FF,$00,$FF,$00,$FF,$00 | ||||||
|  |     DB $00,$FF,$00,$FF,$00,$FF,$00,$FF | ||||||
|  |     DB $00,$FF,$00,$FF,$00,$FF,$00,$FF | ||||||
|  |     DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF | ||||||
|  |     DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF | ||||||
|  |     DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF | ||||||
|  |     DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF | ||||||
|  |     DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF | ||||||
|  |     DB $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF | ||||||
| TilesEnd:: | TilesEnd:: | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -75,8 +75,8 @@ TitleScreenTilemap:: | ||||||
|     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,$5D,$59 |     DB $01,$01,$01,$01,$01,$C1,$C2,$C3,$58,$5A | ||||||
|     DB $52,$01,$5D,$5A,$57,$57,$5E,$01,$81,$48 |     DB $4F,$50,$01,$01,$01,$01,$01,$81,$C4,$C5 | ||||||
|     DB $82,$01,$01,$01,$01,$01,$01,$01,$01,$01 |     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 | ||||||
|  |  | ||||||
							
								
								
									
										61
									
								
								src/rng.asm
								
								
								
								
							
							
						
						
									
										61
									
								
								src/rng.asm
								
								
								
								
							|  | @ -24,9 +24,8 @@ INCLUDE "globals.asm" | ||||||
| 
 | 
 | ||||||
| SECTION "High RNG Variables", HRAM | SECTION "High RNG Variables", HRAM | ||||||
| hRNGSeed:      ds 4 | hRNGSeed:      ds 4 | ||||||
| hPieceHistory: ds 4 | hPieceHistory: ds 6 | ||||||
| hNextPiece::   ds 1 | hNextPiece::   ds 1 | ||||||
| hRNGRerolls::  ds 1 |  | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| section "RNG Functions", ROM0 | section "RNG Functions", ROM0 | ||||||
|  | @ -52,6 +51,8 @@ RNGInit:: | ||||||
|     ld a, PIECE_Z |     ld a, PIECE_Z | ||||||
|     ldh [hPieceHistory], a |     ldh [hPieceHistory], a | ||||||
|     ldh [hPieceHistory+1], a |     ldh [hPieceHistory+1], a | ||||||
|  |     ldh [hPieceHistory+4], a | ||||||
|  |     ldh [hPieceHistory+5], a | ||||||
|     ld a, PIECE_S |     ld a, PIECE_S | ||||||
|     ldh [hPieceHistory+2], a |     ldh [hPieceHistory+2], a | ||||||
|     ldh [hPieceHistory+3], a |     ldh [hPieceHistory+3], a | ||||||
|  | @ -72,33 +73,73 @@ RNGInit:: | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| GetNextPiece:: | GetNextPiece:: | ||||||
|     ldh a, [hRNGRerolls] | :   ldh a, [hSimulationMode] ; Hell? | ||||||
|     cp a, 0 |     cp a, MODE_HELL | ||||||
|     jr nz, :+ |     jr nz, :+ | ||||||
|     call NextPiece |     call NextPiece | ||||||
|     jr .donerolling |     jr .donerolling | ||||||
| :   inc a | 
 | ||||||
|  | :   ldh a, [hSimulationMode] ; TGM1? | ||||||
|  |     cp a, MODE_TGM1 | ||||||
|  |     jr nz, :+ | ||||||
|  |     ld a, 5 | ||||||
|     ld e, a |     ld e, a | ||||||
| :   dec e |     jr .rollloop | ||||||
|  | 
 | ||||||
|  | :   ldh a, [hSimulationMode] ; EASY? | ||||||
|  |     cp a, MODE_EASY | ||||||
|  |     jr nz, :+ | ||||||
|  |     ld a, 0 | ||||||
|  |     ld e, a | ||||||
|  |     jr .rollloop | ||||||
|  | 
 | ||||||
|  | :   ld a, 7 ; TGM2/3. | ||||||
|  |     ld e, a | ||||||
|  | 
 | ||||||
|  | .rollloop | ||||||
|  |     dec e | ||||||
|     jr z, .donerolling |     jr z, .donerolling | ||||||
| 
 | 
 | ||||||
|     call NextPiece |     call NextPiece | ||||||
|     ld hl, hPieceHistory |     ld hl, hPieceHistory | ||||||
|     cp a, [hl] |     cp a, [hl] | ||||||
|     jr z, :- |     jr z, .rollloop | ||||||
|     inc hl |     inc hl | ||||||
|     cp a, [hl] |     cp a, [hl] | ||||||
|     jr z, :- |     jr z, .rollloop | ||||||
|     inc hl |     inc hl | ||||||
|     cp a, [hl] |     cp a, [hl] | ||||||
|     jr z, :- |     jr z, .rollloop | ||||||
|     inc hl |     inc hl | ||||||
|     cp a, [hl] |     cp a, [hl] | ||||||
|     jr z, :- |     jr z, .rollloop | ||||||
|  | 
 | ||||||
|  |     ; Are we in TGM3 or EASY mode? | ||||||
|  |     ld b, a | ||||||
|  |     ldh a, [hSimulationMode] | ||||||
|  |     cp a, MODE_TGM3 | ||||||
|  |     jr z, .6hist | ||||||
|  |     cp a, MODE_EASY | ||||||
|  |     jr z, .6hist | ||||||
|  |     jr .donerolling ; If not, we're done rolling. | ||||||
|  | 
 | ||||||
|  |     ; If we are, extend the history by 2. | ||||||
|  | .6hist | ||||||
|  |     ld a, b | ||||||
|  |     inc hl | ||||||
|  |     cp a, [hl] | ||||||
|  |     jr z, .rollloop | ||||||
|  |     inc hl | ||||||
|  |     cp a, [hl] | ||||||
|  |     jr z, .rollloop | ||||||
| 
 | 
 | ||||||
| .donerolling | .donerolling | ||||||
|     ldh [hNextPiece], a |     ldh [hNextPiece], a | ||||||
|     ld b, a |     ld b, a | ||||||
|  |     ldh a, [hPieceHistory+4] | ||||||
|  |     ldh [hPieceHistory+5], a | ||||||
|  |     ldh a, [hPieceHistory+3] | ||||||
|  |     ldh [hPieceHistory+4], a | ||||||
|     ldh a, [hPieceHistory+2] |     ldh a, [hPieceHistory+2] | ||||||
|     ldh [hPieceHistory+3], a |     ldh [hPieceHistory+3], a | ||||||
|     ldh a, [hPieceHistory+1] |     ldh a, [hPieceHistory+1] | ||||||
|  |  | ||||||
|  | @ -63,10 +63,13 @@ SwitchToGameplay:: | ||||||
|     ld bc, GameplayTilemapEnd - GameplayTilemap |     ld bc, GameplayTilemapEnd - GameplayTilemap | ||||||
|     call UnsafeMemCopy |     call UnsafeMemCopy | ||||||
| 
 | 
 | ||||||
|     ; Place a tell on the screen for RNG rerolls. |     ; Place a tell on the screen for mode. | ||||||
|     ld hl, FIELD_RNGTELL |     ld hl, FIELD_MODE | ||||||
|     ldh a, [hRNGRerolls] |     ldh a, [hSimulationMode] | ||||||
|     add a, TILE_0_FAINT |     sla a | ||||||
|  |     add a, TILE_MODE_FAINT_0 | ||||||
|  |     ld [hl+], a | ||||||
|  |     inc a | ||||||
|     ld [hl], a |     ld [hl], a | ||||||
| 
 | 
 | ||||||
|     ; Clear OAM. |     ; Clear OAM. | ||||||
|  | @ -352,6 +355,9 @@ delayMode: | ||||||
| :   jp drawStaticInfo | :   jp drawStaticInfo | ||||||
| 
 | 
 | ||||||
| preGameOverMode: | preGameOverMode: | ||||||
|  |     ; Spawn the failed piece. | ||||||
|  |     call ForceSpawnPiece | ||||||
|  | 
 | ||||||
|     ; Draw the field in grey. |     ; Draw the field in grey. | ||||||
|     ; Yes. This really unrolls the loop that many times. |     ; Yes. This really unrolls the loop that many times. | ||||||
|     ld hl, wField+(4*10) |     ld hl, wField+(4*10) | ||||||
|  |  | ||||||
|  | @ -89,14 +89,17 @@ SwitchToTitle:: | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
| TitleEventLoopHandler:: | TitleEventLoopHandler:: | ||||||
|     ; Increment RNG leniency? |     ; Increment mode? | ||||||
|     ldh a, [hSelectState] |     ldh a, [hSelectState] | ||||||
|     cp a, 1 |     cp a, 1 | ||||||
|     jr nz, :+ |     jr nz, :+ | ||||||
|     ldh a, [hRNGRerolls] |     ldh a, [hSimulationMode] | ||||||
|     inc a |     inc a | ||||||
|     and a, $0F |     cp a, 5 | ||||||
|     ldh [hRNGRerolls], a |     jr nz, .write | ||||||
|  |     xor a, a | ||||||
|  | .write | ||||||
|  |     ldh [hSimulationMode], a | ||||||
|     jp EventLoopPostHandler |     jp EventLoopPostHandler | ||||||
| 
 | 
 | ||||||
|     ; Start game? |     ; Start game? | ||||||
|  | @ -255,10 +258,13 @@ TitleVBlankHandler:: | ||||||
|     ld hl, TITLE_LEVEL+1 |     ld hl, TITLE_LEVEL+1 | ||||||
|     ld [hl], a |     ld [hl], a | ||||||
| 
 | 
 | ||||||
|     ; Draw RNG |     ; Draw Mode | ||||||
|     ldh a, [hRNGRerolls] |     ld hl, TITLE_MODE | ||||||
|     add a, TILE_0 |     ldh a, [hSimulationMode] | ||||||
|     ld hl, TITLE_ROLLS |     sla a | ||||||
|  |     add a, TILE_MODE_0 | ||||||
|  |     ld [hl+], a | ||||||
|  |     inc a | ||||||
|     ld [hl], a |     ld [hl], a | ||||||
| 
 | 
 | ||||||
|     ; Draw A/B |     ; Draw A/B | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue