V0.0
This commit is contained in:
		
							parent
							
								
									0143555f36
								
							
						
					
					
						commit
						417a89fedd
					
				
							
								
								
									
										10
									
								
								src/main.asm
								
								
								
								
							
							
						
						
									
										10
									
								
								src/main.asm
								
								
								
								
							| 
						 | 
				
			
			@ -5,6 +5,7 @@ DEF MAIN_ASM EQU 1
 | 
			
		|||
INCLUDE "globals.asm"
 | 
			
		||||
INCLUDE "res/tiles.inc"
 | 
			
		||||
INCLUDE "res/gameplay_map.inc"
 | 
			
		||||
INCLUDE "res/title_map.inc"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
SECTION "Globals", HRAM
 | 
			
		||||
| 
						 | 
				
			
			@ -33,13 +34,9 @@ Main::
 | 
			
		|||
    ld bc, TilesEnd - Tiles
 | 
			
		||||
    call UnsafeMemCopy
 | 
			
		||||
 | 
			
		||||
    ; Make sure both sprites and bg use the same tile data.
 | 
			
		||||
    ldh a, [rLCDC]
 | 
			
		||||
    or LCDCF_BLK01
 | 
			
		||||
    ldh [rLCDC], a
 | 
			
		||||
 | 
			
		||||
    ; Clear OAM.
 | 
			
		||||
    call ClearOAM
 | 
			
		||||
    call SetNumberSpritePositions
 | 
			
		||||
    call CopyOAMHandler
 | 
			
		||||
 | 
			
		||||
    ; Zero out the ram where needed.
 | 
			
		||||
| 
						 | 
				
			
			@ -52,7 +49,7 @@ Main::
 | 
			
		|||
    call InitializeLCDCInterrupt
 | 
			
		||||
 | 
			
		||||
    ; Switch to gameplay state.
 | 
			
		||||
    call SwitchToGameplay
 | 
			
		||||
    call SwitchToTitle
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
EventLoop::
 | 
			
		||||
| 
						 | 
				
			
			@ -68,6 +65,7 @@ EventLoop::
 | 
			
		|||
    ldh a, [hGameState]
 | 
			
		||||
    cp a, b
 | 
			
		||||
    jp nz, GamePlayEventLoopHandler
 | 
			
		||||
    jp TitleEventLoopHandler
 | 
			
		||||
EventLoopPostHandler::
 | 
			
		||||
 | 
			
		||||
    ; Wait for vblank.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -81,8 +81,7 @@ SwitchToGameplay::
 | 
			
		|||
    ldh [hGameState], a
 | 
			
		||||
 | 
			
		||||
    ; And turn the LCD back on before we start.
 | 
			
		||||
    ldh a, [rLCDC]
 | 
			
		||||
    or LCDCF_ON | LCDCF_BGON | LCDCF_OBJON
 | 
			
		||||
    ld a, LCDCF_ON | LCDCF_BGON | LCDCF_OBJON | LCDCF_BLK01
 | 
			
		||||
    ldh [rLCDC], a
 | 
			
		||||
 | 
			
		||||
    ; Make sure the first game loop starts just like all the future ones.
 | 
			
		||||
| 
						 | 
				
			
			@ -306,8 +305,9 @@ gameOverMode:
 | 
			
		|||
    ; Quit
 | 
			
		||||
:   ldh a, [hBState]
 | 
			
		||||
    cp a, 1
 | 
			
		||||
    jp z, $100
 | 
			
		||||
    jr drawStaticInfo
 | 
			
		||||
    jr nz, :+
 | 
			
		||||
    call SwitchToTitle
 | 
			
		||||
    jp EventLoopPostHandler
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    ; Always draw the score, level, next piece, and held piece.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1,61 @@
 | 
			
		|||
IF !DEF(STATE_TITLE_ASM)
 | 
			
		||||
DEF STATE_TITLE_ASM EQU 1
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
INCLUDE "globals.asm"
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
SECTION "Title Functions", ROM0
 | 
			
		||||
SwitchToTitle::
 | 
			
		||||
    ; Turn the screen off if it's on.
 | 
			
		||||
    ldh a, [rLCDC]
 | 
			
		||||
    and LCDCF_ON
 | 
			
		||||
    jr z, :+ ; Screen is already off.
 | 
			
		||||
    wait_vram
 | 
			
		||||
    xor a, a
 | 
			
		||||
    ldh [rLCDC], a
 | 
			
		||||
 | 
			
		||||
    ; Load the gameplay tilemap.
 | 
			
		||||
:   ld de, TitleScreenTilemap
 | 
			
		||||
    ld hl, $9800
 | 
			
		||||
    ld bc, TitleScreenTilemapEnd - TitleScreenTilemap
 | 
			
		||||
    call UnsafeMemCopy
 | 
			
		||||
 | 
			
		||||
    ; Clear OAM.
 | 
			
		||||
    call ClearOAM
 | 
			
		||||
    call SetNumberSpritePositions
 | 
			
		||||
 | 
			
		||||
    ; Set up the palettes.
 | 
			
		||||
    ld a, PALETTE_INVERTED
 | 
			
		||||
    set_bg_palette
 | 
			
		||||
    set_obj0_palette
 | 
			
		||||
    set_obj1_palette
 | 
			
		||||
 | 
			
		||||
    ; Install the event loop handlers.
 | 
			
		||||
    ld a, 0
 | 
			
		||||
    ldh [hGameState], a
 | 
			
		||||
 | 
			
		||||
    ; And turn the LCD back on before we start.
 | 
			
		||||
    ld a, LCDCF_ON | LCDCF_BGON | LCDCF_BLK01
 | 
			
		||||
    ldh [rLCDC], a
 | 
			
		||||
 | 
			
		||||
    ; Make sure the first game loop starts just like all the future ones.
 | 
			
		||||
    wait_vblank
 | 
			
		||||
    wait_vblank_end
 | 
			
		||||
    ret
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
TitleEventLoopHandler::
 | 
			
		||||
    ldh a, [hStartState]
 | 
			
		||||
    ld b, a
 | 
			
		||||
    ldh a, [hAState]
 | 
			
		||||
    ld c, a
 | 
			
		||||
    ldh a, [hBState]
 | 
			
		||||
    or a, b
 | 
			
		||||
    or a, c
 | 
			
		||||
    jp z, EventLoopPostHandler
 | 
			
		||||
    call SwitchToGameplay
 | 
			
		||||
    jp EventLoopPostHandler
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
ENDC
 | 
			
		||||
| 
						 | 
				
			
			@ -1,5 +1,5 @@
 | 
			
		|||
#Emulicious settings file
 | 
			
		||||
#Fri Oct 20 17:25:15 CEST 2023
 | 
			
		||||
#Fri Oct 20 18:08:57 CEST 2023
 | 
			
		||||
WindowProfilerWindowOpen=false
 | 
			
		||||
WindowEventViewerWindowHeight=1416
 | 
			
		||||
WindowEventViewerWindowDivider=876
 | 
			
		||||
| 
						 | 
				
			
			@ -7,7 +7,7 @@ WindowMemoryTracerWindowY=631
 | 
			
		|||
WindowMemoryTracerWindowX=383
 | 
			
		||||
Update=2
 | 
			
		||||
AudioSync=false
 | 
			
		||||
DebuggerMemoryTabVisibleRect=0,0,0,0
 | 
			
		||||
DebuggerMemoryTabVisibleRect=0,0,583,128
 | 
			
		||||
WindowProfilerWindowWidth=1073
 | 
			
		||||
UninitializedMemoryBreakpointSuspend=true
 | 
			
		||||
GameBoyErrorBreakpointEnabled32=false
 | 
			
		||||
| 
						 | 
				
			
			@ -22,7 +22,7 @@ GameBoyErrorBreakpointEnabled20=false
 | 
			
		|||
StretchToWindow=false
 | 
			
		||||
WindowProfilerWindowHeight=563
 | 
			
		||||
WindowTileViewerOpen=false
 | 
			
		||||
DebuggerWestPanelSelectedTab=0
 | 
			
		||||
DebuggerWestPanelSelectedTab=1
 | 
			
		||||
WindowMemoryTracerWindowWidth=1136
 | 
			
		||||
WindowPaletteViewerOpen=false
 | 
			
		||||
Key37=-1
 | 
			
		||||
| 
						 | 
				
			
			@ -35,7 +35,7 @@ GameBoyErrorBreakpointEnabled17=false
 | 
			
		|||
Key33=-1
 | 
			
		||||
GameBoyErrorBreakpointEnabled16=false
 | 
			
		||||
Key32=-1
 | 
			
		||||
WindowDebuggerHeight=1896
 | 
			
		||||
WindowDebuggerHeight=1416
 | 
			
		||||
Key31=-1
 | 
			
		||||
Key30=-1
 | 
			
		||||
WindowMemoryTracerWindowHeight=289
 | 
			
		||||
| 
						 | 
				
			
			@ -75,7 +75,7 @@ WindowMemoryTracerWindowOpen=false
 | 
			
		|||
SMSInputDeviceB=1
 | 
			
		||||
SMSInputDeviceA=1
 | 
			
		||||
InterruptBreakpointEnabled=false
 | 
			
		||||
OutlineWidth=208
 | 
			
		||||
OutlineWidth=550
 | 
			
		||||
DebuggerEventFiltersGameBoy=
 | 
			
		||||
GameBoyErrorBreakpointSuspend9=true
 | 
			
		||||
WindowMemoryEditorOpen=false
 | 
			
		||||
| 
						 | 
				
			
			@ -92,7 +92,7 @@ GameBoyErrorBreakpointSuspend2=true
 | 
			
		|||
GameBoyErrorBreakpointSuspend1=true
 | 
			
		||||
GameBoyErrorBreakpointSuspend0=true
 | 
			
		||||
DebuggerConsoleLogBreakpoints=true
 | 
			
		||||
WindowDebuggerOpen=false
 | 
			
		||||
WindowDebuggerOpen=true
 | 
			
		||||
Gamepad1Key37=-1
 | 
			
		||||
Gamepad1Key36=-1
 | 
			
		||||
Gamepad1Key35=-1
 | 
			
		||||
| 
						 | 
				
			
			@ -104,8 +104,8 @@ Gamepad1Key31=-1
 | 
			
		|||
Gamepad1Key30=-1
 | 
			
		||||
BankSwapAtPCBreakpointEnabled=false
 | 
			
		||||
DebuggerMemorySelectedTab=HRAM
 | 
			
		||||
WindowVideoViewerOpen=false
 | 
			
		||||
WindowMemoryEditorTabVisibleRect=0,0,583,128
 | 
			
		||||
WindowVideoViewerOpen=true
 | 
			
		||||
WindowMemoryEditorTabVisibleRect=0,6096,583,384
 | 
			
		||||
Gamepad1Key29=-1
 | 
			
		||||
Gamepad1Key28=-1
 | 
			
		||||
Gamepad1Key27=-1
 | 
			
		||||
| 
						 | 
				
			
			@ -142,7 +142,7 @@ Gamepad1Key13=-1
 | 
			
		|||
Gamepad1Key12=-1
 | 
			
		||||
Gamepad1Key11=-1
 | 
			
		||||
Gamepad1Key10=-1
 | 
			
		||||
WindowMemoryEditorSelectedAddress=37
 | 
			
		||||
WindowMemoryEditorSelectedAddress=6144
 | 
			
		||||
WindowMemoryEditorWidth=665
 | 
			
		||||
GameBoyErrorBreakpointCondition9=
 | 
			
		||||
GameBoyErrorBreakpointCondition8=
 | 
			
		||||
| 
						 | 
				
			
			@ -161,13 +161,13 @@ Gamepad0Key35=-1
 | 
			
		|||
Gamepad0Key34=-1
 | 
			
		||||
Gamepad0Key33=-1
 | 
			
		||||
Gamepad0Key32=-1
 | 
			
		||||
WindowMemoryEditorSelectedTab=HRAM
 | 
			
		||||
WindowMemoryEditorSelectedTab=VRAM
 | 
			
		||||
Gamepad0Key31=-1
 | 
			
		||||
Gamepad0Key30=-1
 | 
			
		||||
SMSGamepadAThreshold=50
 | 
			
		||||
WindowPaletteViewerHeight=313
 | 
			
		||||
WindowVideoViewerY=674
 | 
			
		||||
WindowVideoViewerX=2606
 | 
			
		||||
WindowVideoViewerY=474
 | 
			
		||||
WindowVideoViewerX=2578
 | 
			
		||||
UninitializedMemoryBreakpointEnabled=false
 | 
			
		||||
Gamepad0Key29=-1
 | 
			
		||||
Gamepad0Key28=-1
 | 
			
		||||
| 
						 | 
				
			
			@ -179,13 +179,13 @@ Gamepad0Key23=-1
 | 
			
		|||
Gamepad0Key22=-1
 | 
			
		||||
DebuggerHideToolbar=false
 | 
			
		||||
Gamepad0Key21=-1
 | 
			
		||||
WindowDebuggerWidth=1096
 | 
			
		||||
WindowDebuggerWidth=2576
 | 
			
		||||
Gamepad0Key20=-1
 | 
			
		||||
DebuggerSouthPanelSelectedTab=1
 | 
			
		||||
WindowEmuliciousWidth=816
 | 
			
		||||
WindowVideoViewerWidth=980
 | 
			
		||||
WindowMemoryEditorY=695
 | 
			
		||||
WindowMemoryEditorX=243
 | 
			
		||||
WindowMemoryEditorY=1009
 | 
			
		||||
WindowMemoryEditorX=2715
 | 
			
		||||
Gamepad0Key19=-1
 | 
			
		||||
Gamepad0Key18=-1
 | 
			
		||||
Gamepad0Key17=-1
 | 
			
		||||
| 
						 | 
				
			
			@ -197,7 +197,7 @@ FontSize=13
 | 
			
		|||
Gamepad0Key12=-1
 | 
			
		||||
Gamepad0Key11=-1
 | 
			
		||||
Gamepad0Key10=-1
 | 
			
		||||
StackWidth=685
 | 
			
		||||
StackWidth=2165
 | 
			
		||||
BankSwapAtPCBreakpointSuspend=true
 | 
			
		||||
WindowEmuliciousHeight=781
 | 
			
		||||
WindowSpriteViewerHeight=527
 | 
			
		||||
| 
						 | 
				
			
			@ -205,8 +205,8 @@ GameBoyErrorBreakpointMessage32=
 | 
			
		|||
InterruptBreakpointCondition=
 | 
			
		||||
Recent0=C\:\\workspace\\dmgtris\\bin\\out.gb
 | 
			
		||||
GameBoyErrorBreakpointMessage20=
 | 
			
		||||
WindowEmuliciousY=367
 | 
			
		||||
WindowEmuliciousX=982
 | 
			
		||||
WindowEmuliciousY=445
 | 
			
		||||
WindowEmuliciousX=1412
 | 
			
		||||
GameBoyErrorBreakpointEnabled9=false
 | 
			
		||||
GameBoyErrorBreakpointEnabled8=false
 | 
			
		||||
GameBoyErrorBreakpointEnabled7=false
 | 
			
		||||
| 
						 | 
				
			
			@ -271,7 +271,7 @@ Gamepad0Key2=-1
 | 
			
		|||
Gamepad0Key1=-1
 | 
			
		||||
Gamepad0Key0=-1
 | 
			
		||||
WindowDebuggerY=-8
 | 
			
		||||
WindowDebuggerX=2552
 | 
			
		||||
WindowDebuggerX=-8
 | 
			
		||||
InterruptBreakpointSuspend=true
 | 
			
		||||
SMSGamepadAKeyboard=false
 | 
			
		||||
GameBoyErrorBreakpointSuspend32=true
 | 
			
		||||
| 
						 | 
				
			
			@ -282,12 +282,12 @@ WindowEventViewerWindowWidth=2576
 | 
			
		|||
WindowRAMWatchWindowOpen=false
 | 
			
		||||
BankSwapAtPCBreakpointCondition=
 | 
			
		||||
GameBoyErrorBreakpointSuspend20=true
 | 
			
		||||
SouthPanelHeight=1544
 | 
			
		||||
SouthPanelHeight=1064
 | 
			
		||||
SMSbuttonsKeyboard=false
 | 
			
		||||
StackSplitLocation=774
 | 
			
		||||
StackSplitLocation=534
 | 
			
		||||
WindowMemoryEditorHeight=534
 | 
			
		||||
WindowTilemapViewerWidth=404
 | 
			
		||||
GBGamepadKeyboard=false
 | 
			
		||||
WindowTilemapViewerWidth=404
 | 
			
		||||
UninitializedMemoryBreakpointCondition=
 | 
			
		||||
GameBoyErrorBreakpointSuspend19=true
 | 
			
		||||
GameBoyErrorBreakpointSuspend18=true
 | 
			
		||||
| 
						 | 
				
			
			@ -299,5 +299,5 @@ WindowSpriteViewerOpen=false
 | 
			
		|||
WindowProfilerWindowY=639
 | 
			
		||||
WindowProfilerWindowX=461
 | 
			
		||||
Scale=5.0
 | 
			
		||||
KeyboardRequireWindowFocus=true
 | 
			
		||||
WindowProfilerWindowProcedureProfiler=true
 | 
			
		||||
KeyboardRequireWindowFocus=true
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -0,0 +1 @@
 | 
			
		|||
type=instruction address=gameOverMode%20+%2079 end=gameOverMode%20+%2081 enabled=true suspend=true condition= message=
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
		Loading…
	
		Reference in New Issue