diff options
Diffstat (limited to 'src')
| -rwxr-xr-x | src/data/cards.asm | 3 | ||||
| -rwxr-xr-x | src/engine/home.asm | 87 | ||||
| -rw-r--r-- | src/macros/code.asm | 4 | ||||
| -rwxr-xr-x | src/wram.asm | 5 | 
4 files changed, 86 insertions, 13 deletions
| diff --git a/src/data/cards.asm b/src/data/cards.asm index c93a533..a316554 100755 --- a/src/data/cards.asm +++ b/src/data/cards.asm @@ -1,3 +1,6 @@ +; TODO: Make card data structures more compact and rearrange the fields for +; convenience once the meaning of all fields is figured out. +  CardPointers: ; 30c5c (c:4c5c)  	dw $0000  	dw GrassEnergyCard diff --git a/src/engine/home.asm b/src/engine/home.asm index b3d89f1..738f84a 100755 --- a/src/engine/home.asm +++ b/src/engine/home.asm @@ -210,7 +210,7 @@ CheckForCGB: ; 025c (0:025c)  WaitForVBlank: ; 0264 (0:0264)  	push hl  	ld a, [wLCDC] -	bit 7, a +	bit rLCDC_ENABLE, a  	jr z, .asm_275  	ld hl, wVBlankCtr  	ld a, [hl] @@ -226,9 +226,9 @@ WaitForVBlank: ; 0264 (0:0264)  ; turn LCD on  EnableLCD: ; 0277 (0:0277)  	ld a, [wLCDC]        ; -	bit 7, a             ; +	bit rLCDC_ENABLE, a  ;  	ret nz               ; assert that LCD is off -	or $80               ; +	or rLCDC_ENABLE_MASK ;  	ld [wLCDC], a        ;  	ld [rLCDC], a        ; turn LCD on  	ld a, $c0 @@ -238,7 +238,7 @@ EnableLCD: ; 0277 (0:0277)  ; wait for vblank, then turn LCD off  DisableLCD: ; 028a (0:028a)  	ld a, [rLCDC]        ; -	bit 7, a             ; +	bit rLCDC_ENABLE, a  ;  	ret z                ; assert that LCD is on  	ld a, [rIE]  	ld [wIE], a @@ -2297,7 +2297,33 @@ Func_0ebf: ; 0ebf (0:0ebf)  	ret  ; 0xed5 -	INCROM $0ed5, $0f35 +Func_0ed5: ; 0ed5 (0:0ed5) +	push bc +.asm_ed6 +	call Func_0e39 +	jr nc, .asm_edf +	halt +	nop +	jr .asm_ed6 +.asm_edf +	ld [hli], a +	ld a, [wSerialFlags] +	or a +	jr nz, .asm_eee +	dec bc +	ld a, c +	or b +	jr nz, .asm_ed6 +	pop bc +	or a +	ret +.asm_eee +	pop bc +	scf +	ret +; 0xef1 + +	INCROM $0ef1, $0f35  Func_0f35: ; 0f35 (0:0f35)  	ld a, [wSerialFlags] @@ -2358,7 +2384,17 @@ Func_0f7f: ; 0f7f (0:0f7f)  	ret  ; 0xf9b -	INCROM $0f9b, $0fac +Func_0f9b: ; 0f9b (0:0f9b) +	push hl +	push bc +	ld hl, $ff9e +	ld bc, $000a +	call Func_0ed5 +	call Func_0f58 +	pop bc +	pop hl +	ret +; 0xfac  Func_0fac: ; 0fac (0:0fac)  	push hl @@ -2381,7 +2417,7 @@ Func_0fac: ; 0fac (0:0fac)  	push de  	push hl  	push af -	ld hl, $cbed +	ld hl, wcbed  	pop de  	ld [hl], e  	inc hl @@ -2400,7 +2436,7 @@ Func_0fac: ; 0fac (0:0fac)  	ld [hl], c  	inc hl  	ld [hl], b -	ld hl, $cbed +	ld hl, wcbed  	ld bc, $0008  	call Func_0ebf  	jp c, Func_0f35 @@ -2411,7 +2447,34 @@ Func_0fac: ; 0fac (0:0fac)  	ret  ; 0xfe9 -	INCROM $0fe9, $100b +Func_0fe9: ; 0fe9 (0:0fe9) +	ld hl, wcbed +	ld bc, $0008 +	push hl +	call Func_0ed5 +	jp c, Func_0f35 +	pop hl +	ld e, [hl] +	inc hl +	ld d, [hl] +	inc hl +	push de +	ld e, [hl] +	inc hl +	ld d, [hl] +	inc hl +	push de +	ld e, [hl] +	inc hl +	ld d, [hl] +	inc hl +	ld c, [hl] +	inc hl +	ld b, [hl] +	pop hl +	pop af +	ret +; 0x100b  Func_100b: ; 100b (0:100b)  	ld a, $2 @@ -3806,8 +3869,8 @@ Func_1d91: ; 1d91 (0:1d91)  ; if LCD on, copy during h-blank only  SafeCopyDataDEtoHL: ; 1dca (0:1dca)  	ld a, [wLCDC]        ; -	bit 7, a             ; -	jr nz, .lcd_on     ; assert that LCD is on +	bit rLCDC_ENABLE, a  ; +	jr nz, .lcd_on       ; assert that LCD is on  .lcd_off_loop  	ld a, [de]  	inc de @@ -7712,7 +7775,7 @@ Func_3c45: ; 3c45 (0:3c45)  DoFrameIfLCDEnabled: ; 3c48 (0:3c48)  	push af  	ld a, [rLCDC] -	bit 7, a +	bit rLCDC_ENABLE, a  	jr z, .done  	push bc  	push de diff --git a/src/macros/code.asm b/src/macros/code.asm index 7431fa3..1721d75 100644 --- a/src/macros/code.asm +++ b/src/macros/code.asm @@ -15,6 +15,10 @@ const: MACRO  const_value = const_value + 1  ENDM +dn: MACRO +	db \1 << 4 | \2 +ENDM +  dbw: MACRO  	db \1  	dw \2 diff --git a/src/wram.asm b/src/wram.asm index 1e4d0b3..74b5ce8 100755 --- a/src/wram.asm +++ b/src/wram.asm @@ -424,7 +424,10 @@ wcbe6:: ; cbe6  	ds $1  wcbe7:: ; cbe7 -	ds $12 +	ds $6 + +wcbed:: ; cbed +	ds $c  wcbf9:: ; cbf9  	ds $b | 
