shithub: pokecrystal

Download patch

ref: 25a04a68380160baaf293daeace779b89addff69
parent: 354685efd751cd2d05ff45c500e1af6da845f83d
author: padz <yenatch@github.com>
date: Sat Sep 22 15:39:43 EDT 2012

add flag handling, implement dwb

--- a/main.asm
+++ b/main.asm
@@ -1608,8 +1608,27 @@
 	ret
 ; 0xc658
 
-INCBIN "baserom.gbc",$c658,$ffff - $c658
+INCBIN "baserom.gbc",$c658,$c721 - $c658
 
+CheckFlag: ; c721
+; checks flag id in de
+; returns carry if flag is not set
+	ld b, $02 ; check flag
+	ld a, BANK(GetFlag)
+	ld hl, GetFlag
+	rst $08
+	ld a, c
+	and a
+	jr nz, .isset
+	scf
+	ret
+.isset
+	xor a
+	ret
+; c731
+
+INCBIN "baserom.gbc",$c658,$ffff - $c731
+
 SECTION "bank4",DATA,BANK[$4]
 
 INCBIN "baserom.gbc",$10000,$1167a - $10000
@@ -51298,8 +51317,261 @@
 
 SECTION "bank20",DATA,BANK[$20]
 
-INCBIN "baserom.gbc",$80000,$80730-$80000
+INCBIN "baserom.gbc",$80000,$80430-$80000
 
+GetFlag: ; 80430
+; takes flag id in de
+; stores flag location in de
+; extra input:
+;    b = 0: reset flag
+;      = 1: set flag
+;      > 1: check flag
+;
+	ld a, d
+	cp $00 ; less than 256 flag entries
+	jr z, .start
+	jr c, .read
+	jr .invalid
+.start
+	ld a, e
+	cp $a2 ; number of flag entries
+	jr c, .read
+.invalid
+	xor a
+	ld e, a
+	ld d, a
+.read
+	ld hl, Flags
+	add hl, de ; skip three
+	add hl, de ; bytes for
+	add hl, de ; each step
+	ld e, [hl]
+	inc hl
+	ld d, [hl]
+	inc hl
+	ld c, [hl] ; flag bit
+	ld a, b
+	cp $01
+	jr c, .reset ; b = 0
+	jr z, .set   ; b = 1
+	ld a, [de]   ; b > 1
+	and c
+	ld c, a
+	ret
+.set
+	ld a, [de]
+	or c
+	ld [de], a
+	ret
+.reset
+	ld a, c
+	cpl ; AND all bits except the one in question
+	ld c, a
+	ld a, [de]
+	and c
+	ld [de], a
+	ret
+; 80462
+	
+Flags: ; 80462
+	dwb $d957, %00000010
+	dwb $d957, %00000001
+	dwb $d957, %00000100
+	dwb $d957, %00001000
+	dwb $d957, %10000000
+	
+	dwb $def5, %01000000
+	dwb $def5, %00000001
+	
+	dwb $df2c, %00000001
+	
+	dwb $d854, %00000001
+	dwb $d854, %10000000
+	
+	dwb $dc39, %00000001
+	
+	dwb $d84c, %00000001
+	dwb $d84c, %00000010
+	dwb $d84c, %00001000
+	dwb $d84c, %00010000
+	dwb $d84c, %01000000
+	dwb $d84c, %10000000
+	
+	dwb $d84d, %00000100
+	dwb $d84d, %00000010
+	dwb $d84d, %00000001
+	dwb $d84d, %00010000
+	dwb $d84d, %00100000
+	dwb $d84d, %01000000
+	dwb $d84d, %10000000
+	
+	dwb $dbf5, %00000001
+	dwb $dbf5, %00000010
+	dwb $dbf5, %00000100
+	
+	; johto badges
+	dwb $d857, %00000001 ; $1b
+	dwb $d857, %00000010 ; $1c
+	dwb $d857, %00000100 ; $1d
+	dwb $d857, %00001000 ; $1e
+	dwb $d857, %00010000 ; $1f
+	dwb $d857, %00100000 ; $20
+	dwb $d857, %01000000 ; $21
+	dwb $d857, %10000000 ; $22
+	
+	; kanto badges
+	dwb $d858, %00000001 ; $23
+	dwb $d858, %00000010 ; $24
+	dwb $d858, %00000100 ; $25
+	dwb $d858, %00001000 ; $26
+	dwb $d858, %00010000 ; $27
+	dwb $d858, %00100000 ; $28
+	dwb $d858, %01000000 ; $29
+	dwb $d858, %10000000 ; $2a
+	
+	dwb $def3, %00000001
+	dwb $def3, %00000010
+	dwb $def3, %00000100
+	dwb $def3, %00001000
+	dwb $def3, %00010000
+	dwb $def3, %00100000
+	dwb $def3, %01000000
+	dwb $def3, %10000000
+	
+	dwb $dca5, %00000001
+	dwb $dca5, %00000010
+	dwb $dca5, %00000100
+	dwb $dca5, %00001000
+	dwb $dca5, %00010000
+	dwb $dca5, %00100000
+	dwb $dca5, %01000000
+	dwb $dca5, %10000000
+	
+	dwb $dca6, %00000001
+	dwb $dca6, %00000010
+	dwb $dca6, %00000100
+	dwb $dca6, %00001000
+	dwb $dca6, %00010000
+	dwb $dca6, %00100000
+	dwb $dca6, %01000000
+	dwb $dca6, %10000000
+	
+	dwb $dca7, %00000001
+	dwb $dca7, %00000010
+	dwb $dca7, %00000100
+	dwb $dca7, %00001000
+	dwb $dca7, %00010000
+	dwb $dca7, %00100000
+	dwb $dca7, %01000000
+	dwb $dca7, %10000000
+	
+	dwb $dca7, %00000001
+	dwb $dca7, %00000010
+	dwb $dca7, %00000100
+	dwb $dca7, %00001000
+	dwb $dca7, %00010000
+	
+	dwb $dc9d, %00000001
+	dwb $d84d, %00001000
+	
+	dwb $dc1e, %00000001
+	dwb $dc1e, %00000010
+	dwb $dc1e, %00000100
+	dwb $dc1e, %00001000
+	dwb $dc1e, %00010000
+	dwb $dc1e, %00100000
+	dwb $dc1e, %01000000
+	dwb $dc1e, %10000000
+	
+	dwb $dc1f, %00000001
+	dwb $dc1f, %00000010
+	dwb $dc1f, %00000100
+	dwb $dc1f, %00001000
+	dwb $dc1f, %00010000
+	dwb $dc1f, %00100000
+	dwb $dc1f, %01000000
+	dwb $dc1f, %10000000
+	
+	dwb $dc20, %00000001
+	dwb $dc20, %00000010
+	
+	dwb $cfbc, %10000000
+	dwb $d472, %00000001
+	dwb $dbf3, %00000100
+	
+	dwb $dc4c, %00000001
+	dwb $dc4c, %00000010
+	dwb $dc4c, %00000100
+	dwb $dc4c, %00001000
+	dwb $dc4c, %00010000
+	dwb $dc4c, %00100000
+	dwb $dc4c, %01000000
+	dwb $dc4c, %10000000
+	
+	dwb $dc4d, %00000001
+	dwb $dc4d, %00000010
+	dwb $dc4d, %00000100
+	dwb $dc4d, %00001000
+	dwb $dc4d, %00010000
+	dwb $dc4d, %00100000
+	dwb $dc4d, %01000000
+	dwb $dc4d, %10000000
+	
+	dwb $dc4e, %00000001
+	dwb $dc4e, %00000010
+	dwb $dc4e, %00000100
+	dwb $dc4e, %00001000
+	dwb $dc4e, %00010000
+	dwb $dc4e, %00100000
+	dwb $dc4e, %01000000
+	dwb $dc4e, %10000000
+	
+	dwb $dc50, %00000001
+	dwb $dc50, %00000010
+	dwb $dc50, %00000100
+	dwb $dc50, %00001000
+	dwb $dc50, %00010000
+	dwb $dc50, %00100000
+	dwb $dc50, %01000000
+	dwb $dc50, %10000000
+	
+	dwb $dc51, %00000001
+	dwb $dc51, %00000010
+	
+	dwb $dc54, %00000001
+	dwb $dc54, %00000010
+	dwb $dc54, %00000100
+	dwb $dc54, %00001000
+	dwb $dc54, %00010000
+	dwb $dc54, %00100000
+	dwb $dc54, %01000000
+	dwb $dc54, %10000000
+	
+	dwb $dc55, %00000001
+	dwb $dc55, %00000010
+	dwb $dc55, %00000100
+	dwb $dc55, %00001000
+	dwb $dc55, %00010000
+	dwb $dc55, %00100000
+	dwb $dc55, %01000000
+	dwb $dc55, %10000000
+	
+	dwb $dc56, %00000001
+	dwb $dc56, %00000010
+	dwb $dc56, %00000100
+	dwb $dc56, %00001000
+	dwb $dc56, %00010000
+	dwb $dc56, %00100000
+	dwb $dc56, %01000000
+	dwb $dc56, %10000000
+	
+	dwb $d45b, %00000100
+	dwb $dc20, %00000100
+	dwb $dc20, %00001000
+; 80648
+
+INCBIN "baserom.gbc",$80648,$80730-$80648
+
 BattleText_0x80730: ; 0x80730
 	db $0, $52, " picked up", $4f
 	db "¥@"
@@ -74089,22 +74361,20 @@
 ; fbca8
 
 MagikarpLengthTable: ; fbca8
-; stored in sets of 3
-; first two values are little endian
 ; third value is the divisor
-	db $6e, $00, $01
-	db $36, $01, $02
-	db $c6, $02, $04
-	db $96, $0a, $14
-	db $1e, $1e, $32
-	db $2e, $45, $64
-	db $c6, $7f, $96
-	db $5e, $ba, $96
-	db $6e, $e1, $64
-	db $f6, $f4, $32
-	db $c6, $fc, $14
-	db $ba, $fe, $05
-	db $82, $ff, $02
+	dwb $006e, $01
+	dwb $0136, $02
+	dwb $02c6, $04
+	dwb $0a96, $14
+	dwb $1e1e, $32
+	dwb $452e, $64
+	dwb $7fc6, $96
+	dwb $ba5e, $96
+	dwb $e16e, $64
+	dwb $f4f6, $32
+	dwb $fcc6, $14
+	dwb $feba, $05
+	dwb $ff82, $02
 ; fbccf
 
 INCBIN "baserom.gbc",$FBCCF,$fc000-$fbccf
--