fixed scanline bug + removed old code
This commit is contained in:
		
							parent
							
								
									9f2ddc6621
								
							
						
					
					
						commit
						c4ccba52d2
					
				
							
								
								
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| 
						 | 
					@ -1,2 +1,3 @@
 | 
				
			||||||
build
 | 
					build
 | 
				
			||||||
*.swp
 | 
					*.swp
 | 
				
			||||||
 | 
					*.swo
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -7,7 +7,6 @@ SECTION "Actor", ROM0
 | 
				
			||||||
ActorROM::
 | 
					ActorROM::
 | 
				
			||||||
.structs:
 | 
					.structs:
 | 
				
			||||||
   dw ActorIdle
 | 
					   dw ActorIdle
 | 
				
			||||||
.tiles:
 | 
					 | 
				
			||||||
ActorIdle::
 | 
					ActorIdle::
 | 
				
			||||||
   db 60
 | 
					   db 60
 | 
				
			||||||
   db 15
 | 
					   db 15
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -15,20 +15,20 @@ SECTION "Actor STructs", WRAM0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
   dstruct Actor, Player
 | 
					   dstruct Actor, Player
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SECTION "Animation Variables", WRAM0
 | 
					SECTION "Animation Variables", HRAM
 | 
				
			||||||
 | 
					
 | 
				
			||||||
wCameraX: dw
 | 
					hCameraX: dw
 | 
				
			||||||
wCameraY: dw
 | 
					hCameraY: dw
 | 
				
			||||||
 | 
					
 | 
				
			||||||
wWorkingX: dw
 | 
					hWorkingX: dw
 | 
				
			||||||
wWorkingY: dw
 | 
					hWorkingY: dw
 | 
				
			||||||
wWorkingScreenX: db
 | 
					hWorkingScreenX: db
 | 
				
			||||||
wWorkingScreenY: db
 | 
					hWorkingScreenY: db
 | 
				
			||||||
wWorkingState: db
 | 
					hWorkingState: db
 | 
				
			||||||
wWorkingCounter: db
 | 
					hWorkingCounter: db
 | 
				
			||||||
wWorkingData: dw
 | 
					hWorkingData: dw
 | 
				
			||||||
wWorkingTile: db
 | 
					hWorkingTile: db
 | 
				
			||||||
wWorkingEnd:
 | 
					hWorkingEnd:
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SECTION "Animations Subs", ROM0
 | 
					SECTION "Animations Subs", ROM0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -48,27 +48,27 @@ RenderActor::
 | 
				
			||||||
   ; @input: hl <- Player
 | 
					   ; @input: hl <- Player
 | 
				
			||||||
   ; @input: de <- ShadowOAM place
 | 
					   ; @input: de <- ShadowOAM place
 | 
				
			||||||
   ld a, [hli] ; a <- YPos
 | 
					   ld a, [hli] ; a <- YPos
 | 
				
			||||||
   ld [wWorkingScreenY], a
 | 
					   ldh [hWorkingScreenY], a
 | 
				
			||||||
   ld a, [hli] ; a <- XPos
 | 
					   ld a, [hli] ; a <- XPos
 | 
				
			||||||
   ld [wWorkingScreenX], a
 | 
					   ldh [hWorkingScreenX], a
 | 
				
			||||||
   push hl
 | 
					   push hl
 | 
				
			||||||
   ld a, [hli] ; a <- GFXCounter
 | 
					   ld a, [hli] ; a <- GFXCounter
 | 
				
			||||||
   ld [wWorkingCounter], a
 | 
					   ldh [hWorkingCounter], a
 | 
				
			||||||
   ld a, [hli] ; a <- GFXState
 | 
					   ld a, [hli] ; a <- GFXState
 | 
				
			||||||
   ld [wWorkingState], a
 | 
					   ldh [hWorkingState], a
 | 
				
			||||||
   ld a, [hli] ; a <- GFXData(Low)
 | 
					   ld a, [hli] ; a <- GFXData(Low)
 | 
				
			||||||
   ld [wWorkingData+1], a
 | 
					   ldh [hWorkingData+1], a
 | 
				
			||||||
   ld a, [hli] ; a <- GFXData (High)
 | 
					   ld a, [hli] ; a <- GFXData (High)
 | 
				
			||||||
   ld [wWorkingData], a
 | 
					   ldh [hWorkingData], a
 | 
				
			||||||
   ld a, [hl] ; a <- TileData
 | 
					   ld a, [hl] ; a <- TileData
 | 
				
			||||||
   ld [wWorkingTile], a
 | 
					   ldh [hWorkingTile], a
 | 
				
			||||||
; fin loading data
 | 
					; fin loading data
 | 
				
			||||||
   ld a, [wWorkingData]
 | 
					   ld a, [hWorkingData]
 | 
				
			||||||
   ld l, a
 | 
					   ld l, a
 | 
				
			||||||
   ld a, [wWorkingData+1]
 | 
					   ld a, [hWorkingData+1]
 | 
				
			||||||
   ld h, a
 | 
					   ld h, a
 | 
				
			||||||
; add actor struct offset saved in wWorkingState
 | 
					; add actor struct offset saved in wWorkingState
 | 
				
			||||||
   ld a, [wWorkingState]
 | 
					   ld a, [hWorkingState]
 | 
				
			||||||
   rlca                  ; double state offset because of word length
 | 
					   rlca                  ; double state offset because of word length
 | 
				
			||||||
   add a, l
 | 
					   add a, l
 | 
				
			||||||
   ld l, a
 | 
					   ld l, a
 | 
				
			||||||
| 
						 | 
					@ -82,7 +82,7 @@ RenderActor::
 | 
				
			||||||
   ld h, a
 | 
					   ld h, a
 | 
				
			||||||
   ld a, [hli]           ; a <- state frame limit
 | 
					   ld a, [hli]           ; a <- state frame limit
 | 
				
			||||||
   ld b, a
 | 
					   ld b, a
 | 
				
			||||||
   ld a, [wWorkingCounter]
 | 
					   ld a, [hWorkingCounter]
 | 
				
			||||||
   inc a
 | 
					   inc a
 | 
				
			||||||
   ld c, a
 | 
					   ld c, a
 | 
				
			||||||
   ld a, b
 | 
					   ld a, b
 | 
				
			||||||
| 
						 | 
					@ -93,7 +93,7 @@ RenderActor::
 | 
				
			||||||
   xor a
 | 
					   xor a
 | 
				
			||||||
.continueAnimation
 | 
					.continueAnimation
 | 
				
			||||||
   ; TODO: make counter 0 indexed so doesnt skip first frame
 | 
					   ; TODO: make counter 0 indexed so doesnt skip first frame
 | 
				
			||||||
   ld [wWorkingCounter], a
 | 
					   ldh [hWorkingCounter], a
 | 
				
			||||||
   ld b, h
 | 
					   ld b, h
 | 
				
			||||||
   ld c, l
 | 
					   ld c, l
 | 
				
			||||||
   pop hl
 | 
					   pop hl
 | 
				
			||||||
| 
						 | 
					@ -124,7 +124,7 @@ RenderActor::
 | 
				
			||||||
   ; load Y position, then offset by -16
 | 
					   ; load Y position, then offset by -16
 | 
				
			||||||
   ld a, [hli]
 | 
					   ld a, [hli]
 | 
				
			||||||
   ld c, a
 | 
					   ld c, a
 | 
				
			||||||
   ld a, [wWorkingScreenY]
 | 
					   ld a, [hWorkingScreenY]
 | 
				
			||||||
   add c
 | 
					   add c
 | 
				
			||||||
   ld c, 16
 | 
					   ld c, 16
 | 
				
			||||||
   add c
 | 
					   add c
 | 
				
			||||||
| 
						 | 
					@ -133,7 +133,7 @@ RenderActor::
 | 
				
			||||||
   ; load X position, then offset by -8
 | 
					   ; load X position, then offset by -8
 | 
				
			||||||
   ld a, [hli]
 | 
					   ld a, [hli]
 | 
				
			||||||
   ld c, a
 | 
					   ld c, a
 | 
				
			||||||
   ld a, [wWorkingScreenX]
 | 
					   ld a, [hWorkingScreenX]
 | 
				
			||||||
   add c
 | 
					   add c
 | 
				
			||||||
   ld c, 8
 | 
					   ld c, 8
 | 
				
			||||||
   add c
 | 
					   add c
 | 
				
			||||||
| 
						 | 
					@ -142,7 +142,7 @@ RenderActor::
 | 
				
			||||||
   ; load tile offset, and add to base tile pointer
 | 
					   ; load tile offset, and add to base tile pointer
 | 
				
			||||||
   ld a, [hli]
 | 
					   ld a, [hli]
 | 
				
			||||||
   ld c, a
 | 
					   ld c, a
 | 
				
			||||||
   ld a, [wWorkingTile]
 | 
					   ld a, [hWorkingTile]
 | 
				
			||||||
   add c
 | 
					   add c
 | 
				
			||||||
   ld [de], a
 | 
					   ld [de], a
 | 
				
			||||||
   inc de
 | 
					   inc de
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -12,19 +12,8 @@ P1F_DPAD     EQU $20
 | 
				
			||||||
 | 
					
 | 
				
			||||||
SECTION "ROM Vars", ROM0
 | 
					SECTION "ROM Vars", ROM0
 | 
				
			||||||
 | 
					
 | 
				
			||||||
dPlayerWidth: db 2
 | 
					 | 
				
			||||||
dPlayerHeight: db 2
 | 
					 | 
				
			||||||
dPlayerSpriteTiles: db $01, $02, $09, $0A
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
SECTION "WRAM Vars", WRAM0[$C000]
 | 
					SECTION "WRAM Vars", WRAM0[$C000]
 | 
				
			||||||
 | 
					
 | 
				
			||||||
X: dw
 | 
					 | 
				
			||||||
N: dw
 | 
					 | 
				
			||||||
ANS: db
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
rPlayerX: db
 | 
					 | 
				
			||||||
rPlayerY: db
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
SECTION "HRAM Vars", HRAM
 | 
					SECTION "HRAM Vars", HRAM
 | 
				
			||||||
 | 
					
 | 
				
			||||||
hVBlankFlag: db
 | 
					hVBlankFlag: db
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -25,8 +25,6 @@ Start:
 | 
				
			||||||
   ld [rSCY], a
 | 
					   ld [rSCY], a
 | 
				
			||||||
   ld [rSCX], a
 | 
					   ld [rSCX], a
 | 
				
			||||||
   ld [rNR52], a
 | 
					   ld [rNR52], a
 | 
				
			||||||
   ld a, LCDCF_ON | LCDCF_OBJON | LCDCF_BGON
 | 
					 | 
				
			||||||
   ld [rLCDC], a
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
   call CopyDMARoutine 
 | 
					   call CopyDMARoutine 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					@ -43,11 +41,14 @@ Start:
 | 
				
			||||||
   ld a, LOW(ActorROM)
 | 
					   ld a, LOW(ActorROM)
 | 
				
			||||||
   ld [Player_GFXData + 1], a
 | 
					   ld [Player_GFXData + 1], a
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					   ld a, LCDCF_ON | LCDCF_OBJON | LCDCF_BGON
 | 
				
			||||||
 | 
					   ld [rLCDC], a
 | 
				
			||||||
 | 
					
 | 
				
			||||||
game_loop:
 | 
					game_loop:
 | 
				
			||||||
   call Wait_VBlank
 | 
					   call Hide_OAM
 | 
				
			||||||
   call Read_Pad
 | 
					   call Read_Pad
 | 
				
			||||||
   call PC_Update
 | 
					   call PC_Update
 | 
				
			||||||
   call Clear_OAM
 | 
					   call Wait_VBlank
 | 
				
			||||||
   ld de, wShadowOAM
 | 
					   ld de, wShadowOAM
 | 
				
			||||||
   ld hl, Player
 | 
					   ld hl, Player
 | 
				
			||||||
   call RenderActor
 | 
					   call RenderActor
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										113
									
								
								src/misc.asm
									
									
									
									
									
								
							
							
						
						
									
										113
									
								
								src/misc.asm
									
									
									
									
									
								
							| 
						 | 
					@ -1,102 +1,3 @@
 | 
				
			||||||
Player_To_OAM:
 | 
					 | 
				
			||||||
; -- first loop --
 | 
					 | 
				
			||||||
   ld hl, wShadowOAM
 | 
					 | 
				
			||||||
   ld a, [dPlayerHeight]
 | 
					 | 
				
			||||||
   ld b, a
 | 
					 | 
				
			||||||
   ld d, 16
 | 
					 | 
				
			||||||
   ld a, [rPlayerY]
 | 
					 | 
				
			||||||
   add d ; d has the base Y value (counting offsets)
 | 
					 | 
				
			||||||
   ld d, a
 | 
					 | 
				
			||||||
.fouter
 | 
					 | 
				
			||||||
   ld a, [dPlayerWidth]
 | 
					 | 
				
			||||||
   ld c, a ; c is finner counter
 | 
					 | 
				
			||||||
.finner
 | 
					 | 
				
			||||||
   ld a, d
 | 
					 | 
				
			||||||
   ld [hl], a
 | 
					 | 
				
			||||||
   ld a, 4
 | 
					 | 
				
			||||||
   call .add4hl
 | 
					 | 
				
			||||||
; end of finner loop
 | 
					 | 
				
			||||||
   dec c
 | 
					 | 
				
			||||||
   jr nz, .finner
 | 
					 | 
				
			||||||
   ld a, d
 | 
					 | 
				
			||||||
   ld d, 8
 | 
					 | 
				
			||||||
   add d
 | 
					 | 
				
			||||||
   ld d, a
 | 
					 | 
				
			||||||
; end of fouter loop
 | 
					 | 
				
			||||||
   dec b
 | 
					 | 
				
			||||||
   jr nz, .fouter
 | 
					 | 
				
			||||||
; -- second loop --
 | 
					 | 
				
			||||||
   ld hl, wShadowOAM+1
 | 
					 | 
				
			||||||
   ld a, [dPlayerHeight]
 | 
					 | 
				
			||||||
   ld b, a
 | 
					 | 
				
			||||||
.souter
 | 
					 | 
				
			||||||
   ld d, 8
 | 
					 | 
				
			||||||
   ld a, [rPlayerX]
 | 
					 | 
				
			||||||
   add d
 | 
					 | 
				
			||||||
   ld d, a
 | 
					 | 
				
			||||||
   ld a, [dPlayerWidth]
 | 
					 | 
				
			||||||
   ld c, a
 | 
					 | 
				
			||||||
.sinner
 | 
					 | 
				
			||||||
   ld a, d
 | 
					 | 
				
			||||||
   ld [hl], a
 | 
					 | 
				
			||||||
   add 8
 | 
					 | 
				
			||||||
   ld d, a
 | 
					 | 
				
			||||||
   ld a, 4
 | 
					 | 
				
			||||||
   call .add4hl
 | 
					 | 
				
			||||||
   dec c
 | 
					 | 
				
			||||||
   jr nz, .sinner
 | 
					 | 
				
			||||||
   dec b
 | 
					 | 
				
			||||||
   jr nz, .souter
 | 
					 | 
				
			||||||
; -- third loop --
 | 
					 | 
				
			||||||
   ld hl, wShadowOAM+2
 | 
					 | 
				
			||||||
   ld de, dPlayerSpriteTiles
 | 
					 | 
				
			||||||
   ld a, [dPlayerHeight]
 | 
					 | 
				
			||||||
   ld b, a
 | 
					 | 
				
			||||||
   ld a, [dPlayerWidth]
 | 
					 | 
				
			||||||
   ld c, a
 | 
					 | 
				
			||||||
   xor a
 | 
					 | 
				
			||||||
.tloop1
 | 
					 | 
				
			||||||
   add b
 | 
					 | 
				
			||||||
   dec c
 | 
					 | 
				
			||||||
   jr nz, .tloop1
 | 
					 | 
				
			||||||
   ld c, a
 | 
					 | 
				
			||||||
.tloop2
 | 
					 | 
				
			||||||
   ld a, [de]
 | 
					 | 
				
			||||||
   ld [hl], a
 | 
					 | 
				
			||||||
   ld a, 4
 | 
					 | 
				
			||||||
   call .add4hl
 | 
					 | 
				
			||||||
   inc de
 | 
					 | 
				
			||||||
   dec c
 | 
					 | 
				
			||||||
   jr nz, .tloop2
 | 
					 | 
				
			||||||
; -- fourth loop --
 | 
					 | 
				
			||||||
   ld hl, wShadowOAM+3
 | 
					 | 
				
			||||||
   ld a, [dPlayerHeight]
 | 
					 | 
				
			||||||
   ld b, a
 | 
					 | 
				
			||||||
   ld a, [dPlayerWidth]
 | 
					 | 
				
			||||||
   ld c, a
 | 
					 | 
				
			||||||
   xor a
 | 
					 | 
				
			||||||
.lloop1
 | 
					 | 
				
			||||||
   add b
 | 
					 | 
				
			||||||
   dec c
 | 
					 | 
				
			||||||
   jr nz, .lloop1
 | 
					 | 
				
			||||||
   ld c, a
 | 
					 | 
				
			||||||
.lloop2
 | 
					 | 
				
			||||||
   xor a
 | 
					 | 
				
			||||||
   ld [hl], a
 | 
					 | 
				
			||||||
   ld a, 4
 | 
					 | 
				
			||||||
   call .add4hl
 | 
					 | 
				
			||||||
   dec c
 | 
					 | 
				
			||||||
   jr nz, .lloop2
 | 
					 | 
				
			||||||
   ret
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
.add4hl:
 | 
					 | 
				
			||||||
   add a, l ; a = low + old_l
 | 
					 | 
				
			||||||
   ld l, a  ; a = low + old_l = new_l
 | 
					 | 
				
			||||||
   adc a, h ; a = new_l + old_h + carry
 | 
					 | 
				
			||||||
   sub l    ; a = old_h + carry
 | 
					 | 
				
			||||||
   ld h, a
 | 
					 | 
				
			||||||
   ret
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
PC_Update:
 | 
					PC_Update:
 | 
				
			||||||
   ld b, 0
 | 
					   ld b, 0
 | 
				
			||||||
   ld c, 0
 | 
					   ld c, 0
 | 
				
			||||||
| 
						 | 
					@ -146,6 +47,20 @@ Clear_OAM:
 | 
				
			||||||
   jr nz, .loop
 | 
					   jr nz, .loop
 | 
				
			||||||
   ret
 | 
					   ret
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					Hide_OAM:
 | 
				
			||||||
 | 
					   ld hl, wShadowOAM
 | 
				
			||||||
 | 
					   ld c, wShadowOAMEnd - wShadowOAM
 | 
				
			||||||
 | 
					.loop:
 | 
				
			||||||
 | 
					   xor a
 | 
				
			||||||
 | 
					   ld [hl], a
 | 
				
			||||||
 | 
					   ld a, l
 | 
				
			||||||
 | 
					   or 3
 | 
				
			||||||
 | 
					   inc a
 | 
				
			||||||
 | 
					   ld l, a
 | 
				
			||||||
 | 
					   dec c
 | 
				
			||||||
 | 
					   jr nz, .loop
 | 
				
			||||||
 | 
					   ret
 | 
				
			||||||
 | 
					
 | 
				
			||||||
Clear_Map:
 | 
					Clear_Map:
 | 
				
			||||||
   ld hl, _SCRN0
 | 
					   ld hl, _SCRN0
 | 
				
			||||||
   ld bc, _SCRN0_END - _SCRN0
 | 
					   ld bc, _SCRN0_END - _SCRN0
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
		Reference in a new issue