summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpadz <yenatch@github.com>2012-09-22 19:39:43 -0400
committerpadz <yenatch@github.com>2012-09-22 19:39:43 -0400
commit25a04a68380160baaf293daeace779b89addff69 (patch)
treea0e0cc8d507a4303827f73bff0029ab42a65e4ca
parent354685efd751cd2d05ff45c500e1af6da845f83d (diff)
add flag handling, implement dwb
-rw-r--r--main.asm304
1 files changed, 287 insertions, 17 deletions
diff --git a/main.asm b/main.asm
index 53ecb7440..724758c94 100644
--- a/main.asm
+++ b/main.asm
@@ -1608,7 +1608,26 @@ PrintNumber_AdvancePointer: ; c64a
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]
@@ -51298,7 +51317,260 @@ Route12SuperRodHouse_MapEventHeader: ; 0x7f60b
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
@@ -74089,22 +74361,20 @@ BCMinusDE: ; fbca1
; 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