summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--constants.asm5
-rw-r--r--main.asm284
-rw-r--r--wram.asm13
3 files changed, 287 insertions, 15 deletions
diff --git a/constants.asm b/constants.asm
index 3d75a8f0d..eb9def7fb 100644
--- a/constants.asm
+++ b/constants.asm
@@ -1,5 +1,10 @@
_CRYSTAL EQU 1
+dwb: MACRO
+ dw \1
+ db \2
+ ENDM
+
TX_FAR: MACRO
db $16
dw \1
diff --git a/main.asm b/main.asm
index e6c81e152..53ecb7440 100644
--- a/main.asm
+++ b/main.asm
@@ -743,7 +743,31 @@ BitTableFunc: ; 0x2e76
ret
; 0x2ead
-INCBIN "baserom.gbc",$2ead,$2fcb-$2ead
+INCBIN "baserom.gbc",$2ead,$2fb1-$2ead
+
+Function2fb1: ; 2fb1
+ push bc
+ ld c, a
+ xor a
+ sub c
+.asm_2fb5
+ sub c
+ jr nc, .asm_2fb5
+ add c
+ ld b, a
+ push bc
+.asm_2fbb
+ call $2f8c
+ ld a, [$ff00+$e1]
+ ld c, a
+ add b
+ jr c, .asm_2fbb
+ ld a, c
+ pop bc
+ call $3110
+ pop bc
+ ret
+; 2fcb
Function2fcb: ; 0x2fcb
cp $4
@@ -10972,7 +10996,7 @@ Function3e8eb: ; 3e8eb
bit 3, a
jp nz, .asm_3ea90
.asm_3ea44
- call CheckSleepingWildMon
+ call CheckSleepingTreeMon
ld a, $07
jr c, .asm_3ea4c
xor a
@@ -11096,17 +11120,17 @@ Function3e8eb: ; 3e8eb
ret
; 3eb38
-CheckSleepingWildMon: ; 3eb38
+CheckSleepingTreeMon: ; 3eb38
ld a, [BattleType]
cp a, $08 ; headbutt
jr nz, .notsleeping
- ld hl, SleepingWildMonMornTable
+ ld hl, SleepingTreeMonMornTable
ld a, [TimeOfDay]
cp a, $01 ; day
jr c, .check
- ld hl, SleepingWildMonDayTable
+ ld hl, SleepingTreeMonDayTable
jr z, .check
- ld hl, SleepingWildMonNiteTable
+ ld hl, SleepingTreeMonNiteTable
.check
ld a, [EnemyMonSpecies]
ld de, $0001
@@ -11117,7 +11141,7 @@ CheckSleepingWildMon: ; 3eb38
ret
; 3eb5d
-SleepingWildMonNiteTable: ; 3eb5d
+SleepingTreeMonNiteTable: ; 3eb5d
db CATERPIE
db METAPOD
db BUTTERFREE
@@ -11132,7 +11156,7 @@ SleepingWildMonNiteTable: ; 3eb5d
db $ff ; end
; 3eb69
-SleepingWildMonDayTable: ; 3eb69
+SleepingTreeMonDayTable: ; 3eb69
db VENONAT
db HOOTHOOT
db NOCTOWL
@@ -11141,7 +11165,7 @@ SleepingWildMonDayTable: ; 3eb69
db $ff ; end
; 3eb6f
-SleepingWildMonMornTable ; 3eb6f
+SleepingTreeMonMornTable ; 3eb6f
db VENONAT
db HOOTHOOT
db NOCTOWL
@@ -73600,7 +73624,247 @@ INCBIN "baserom.gbc",$B4000,$4000
SECTION "bank2E",DATA,BANK[$2E]
-INCBIN "baserom.gbc",$B8000,$4000
+INCBIN "baserom.gbc",$B8000,$b8219 - $b8000
+
+Functionb8219: ; b8219
+; deals strictly with rockmon encounter
+ xor a
+ ld [$d22e], a
+ ld [$d143], a
+ ld hl, WildRockMonMapTable
+ call GetTreeMonEncounterTable
+ jr nc, .quit
+ call LoadWildTreeMonData
+ jr nc, .quit
+ ld a, $0a
+ call $2fb1
+ cp a, $04
+ jr nc, .quit
+ call $441f
+ jr nc, .quit
+ ret
+.quit
+ xor a
+ ret
+; b823e
+
+db $05 ; ????
+
+GetTreeMonEncounterTable: ; b823f
+; reads a map-sensitive encounter table
+; compares current map with maps in the table
+; if there is a match, encounter table # is loaded into a
+ ld a, [MapNumber]
+ ld e, a
+ ld a, [MapGroup]
+ ld d, a
+.loop
+ ld a, [hli]
+ cp a, $ff
+ jr z, .quit
+ cp d
+ jr nz, .skip2
+ ld a, [hli]
+ cp e
+ jr nz, .skip1
+ jr .end
+.skip2
+ inc hl
+.skip1
+ inc hl
+ jr .loop
+.quit
+ xor a
+ ret
+.end
+ ld a, [hl]
+ scf
+ ret
+; b825e
+
+INCBIN "baserom.gbc",$B825E,$b82c5 - $b825e
+
+WildRockMonMapTable: ; b82c5
+ db GROUP_CIANWOOD_CITY, MAP_CIANWOOD_CITY, $07
+ db GROUP_ROUTE_40, MAP_ROUTE_40, $07
+ db GROUP_DARK_CAVE_VIOLET_ENTRANCE, MAP_DARK_CAVE_VIOLET_ENTRANCE, $07
+ db GROUP_SLOWPOKE_WELL_B1F, MAP_SLOWPOKE_WELL_B1F, $07
+ db $ff ; end
+; b82d2
+
+LoadWildTreeMonData: ; b82d2
+; input: a = table number
+; returns wildtreemontable pointer in hl
+; sets carry if successful
+ cp a, $08 ; which table?
+ jr nc, .quit ; only 8 tables
+ and a
+ jr z, .quit ; 0 is invalid
+ ld e, a
+ ld d, $00
+ ld hl, WildTreeMonPointerTable
+ add hl, de
+ add hl, de
+ ld a, [hli] ; store pointer in hl
+ ld h, [hl]
+ ld l, a
+ scf
+ ret
+.quit
+ xor a
+ ret
+; b82e8
+
+WildTreeMonPointerTable: ; b82e8
+; seems to point to "normal" tree encounter data
+; as such only odd-numbered tables are used
+; rockmon is 13th
+ dw WildTreeMonTable1 ; filler
+ dw WildTreeMonTable1 ; 1
+ dw WildTreeMonTable3 ; 2
+ dw WildTreeMonTable5 ; 3
+ dw WildTreeMonTable7 ; 4
+ dw WildTreeMonTable9 ; 5
+ dw WildTreeMonTable11 ; 6
+ dw WildRockMonTable ; 7
+ dw WildTreeMonTable1 ; 8
+; b82fa
+
+; structure: % species level
+
+WildTreeMonTable1: ; b82fa
+ db 50, SPEAROW, 10
+ db 15, SPEAROW, 10
+ db 15, SPEAROW, 10
+ db 10, AIPOM, 10
+ db 5, AIPOM, 10
+ db 5, AIPOM, 10
+ db $ff ; end
+; b830d
+
+WildTreeMonTable2 ; b830d
+; unused
+ db 50, SPEAROW, 10
+ db 15, HERACROSS, 10
+ db 15, HERACROSS, 10
+ db 10, AIPOM, 10
+ db 5, AIPOM, 10
+ db 5, AIPOM, 10
+ db $ff ; end
+; b8320
+
+WildTreeMonTable3: ; b8320
+ db 50, SPEAROW, 10
+ db 15, EKANS, 10
+ db 15, SPEAROW, 10
+ db 10, AIPOM, 10
+ db 5, AIPOM, 10
+ db 5, AIPOM, 10
+ db $ff ; end
+; b8333
+
+WildTreeMonTable4: ; b8333
+; unused
+ db 50, SPEAROW, 10
+ db 15, HERACROSS, 10
+ db 15, HERACROSS, 10
+ db 10, AIPOM, 10
+ db 5, AIPOM, 10
+ db 5, AIPOM, 10
+ db $ff ; end
+; b8346
+
+WildTreeMonTable5: ; b8346
+ db 50, HOOTHOOT, 10
+ db 15, SPINARAK, 10
+ db 15, LEDYBA, 10
+ db 10, EXEGGCUTE, 10
+ db 5, EXEGGCUTE, 10
+ db 5, EXEGGCUTE, 10
+ db $ff ; end
+; b8359
+
+WildTreeMonTable6: ; b8359
+; unused
+ db 50, HOOTHOOT, 10
+ db 15, PINECO, 10
+ db 15, PINECO, 10
+ db 10, EXEGGCUTE, 10
+ db 5, EXEGGCUTE, 10
+ db 5, EXEGGCUTE, 10
+ db $ff ; end
+; b836c
+
+WildTreeMonTable7: ; b836c
+ db 50, HOOTHOOT, 10
+ db 15, EKANS, 10
+ db 15, HOOTHOOT, 10
+ db 10, EXEGGCUTE, 10
+ db 5, EXEGGCUTE, 10
+ db 5, EXEGGCUTE, 10
+ db $ff ; end
+; b837f
+
+WildTreeMonTable8: ; b837f
+; unused
+ db 50, HOOTHOOT, 10
+ db 15, PINECO, 10
+ db 15, PINECO, 10
+ db 10, EXEGGCUTE, 10
+ db 5, EXEGGCUTE, 10
+ db 5, EXEGGCUTE, 10
+ db $ff ; end
+; b8392
+
+WildTreeMonTable9: ; b8392
+ db 50, HOOTHOOT, 10
+ db 15, VENONAT, 10
+ db 15, HOOTHOOT, 10
+ db 10, EXEGGCUTE, 10
+ db 5, EXEGGCUTE, 10
+ db 5, EXEGGCUTE, 10
+ db $ff ; end
+; b83a5
+
+WildTreeMonTable10: ; b83a5
+; unused
+ db 50, HOOTHOOT, 10
+ db 15, PINECO, 10
+ db 15, PINECO, 10
+ db 10, EXEGGCUTE, 10
+ db 5, EXEGGCUTE, 10
+ db 5, EXEGGCUTE, 10
+ db $ff ; end
+; b83b8
+
+WildTreeMonTable11: ; b83b8
+ db 50, HOOTHOOT, 10
+ db 15, PINECO, 10
+ db 15, PINECO, 10
+ db 10, NOCTOWL, 10
+ db 5, BUTTERFREE, 10
+ db 5, BEEDRILL, 10
+ db $ff ; end
+; b83cb
+
+WildTreeMonTable12; b83cb
+; unused
+ db 50, HOOTHOOT, 10
+ db 15, CATERPIE, 10
+ db 15, WEEDLE, 10
+ db 10, HOOTHOOT, 10
+ db 5, METAPOD, 10
+ db 5, KAKUNA, 10
+ db $ff ; end
+; b83de
+
+WildRockMonTable: ; b83de
+ db 90, KRABBY, 15
+ db 10, SHUCKLE, 15
+ db $ff ; end
+; b83e5
+
+INCBIN "baserom.gbc",$B83E5,$bc000 - $b83e5
SECTION "bank2F",DATA,BANK[$2F]
diff --git a/wram.asm b/wram.asm
index 00acd048f..39c2cafbc 100644
--- a/wram.asm
+++ b/wram.asm
@@ -691,8 +691,11 @@ SECTION "Status",BSS[$d84e]
Money: ; d84e
ds 3
-Badges: ; d857
- ds 2
+Badges:
+JohtoBadges: ; d857
+ ds 1
+KantoBadges: ; d858
+ ds 1
SECTION "Items",BSS[$d859]
TMsHMs: ; d859
@@ -763,11 +766,11 @@ Box10Name: ; 0xdc16
ds 9
Box11Name: ; 0xdc1f
ds 9
-Box12Name: ; 0xdb28
+Box12Name: ; 0xdc28
ds 9
-Box13Name: ; 0xdb31
+Box13Name: ; 0xdc31
ds 9
-Box14Name: ; 0xdb3a
+Box14Name: ; 0xdc3a
ds 9
SECTION "BackupMapInfo", BSS[$dcad]