Replace hardware_constants.asm with the community-standard hardware.inc 5.0 (#130)

This commit is contained in:
Rangi 2025-06-23 09:11:35 -04:00 committed by GitHub
parent 7c3ac3e1b8
commit f57be98873
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
103 changed files with 2540 additions and 1667 deletions

View File

@ -14,27 +14,27 @@ _InitSound::
push bc
push af
call MusicOff
ld hl, rNR50 ; channel control registers
ld hl, rAUDVOL ; channel control registers
xor a
ld [hli], a ; rNR50 ; volume/vin
ld [hli], a ; rNR51 ; sfx channels
ld [hli], a ; rAUDVOL ; volume/vin
ld [hli], a ; rAUDTERM ; sfx channels
ld a, $80 ; all channels on
ld [hli], a ; rNR52 ; music channels
ld [hli], a ; rAUDENA ; music channels
ld hl, rNR10 ; sound channel registers
ld hl, rAUD1SWEEP ; sound channel registers
ld e, NUM_MUSIC_CHANS
.clearsound
; sound channel 1 2 3 4
xor a
ld [hli], a ; rNR10, rNR20, rNR30, rNR40 ; sweep = 0
ld [hli], a ; rAUD1SWEEP, rNR20, rAUD3ENA, rNR40 ; sweep = 0
ld [hli], a ; rNR11, rNR21, rNR31, rNR41 ; length/wavepattern = 0
ld [hli], a ; rAUD1LEN, rAUD2LEN, rAUD3LEN, rAUD4LEN ; length/wavepattern = 0
ld a, $8
ld [hli], a ; rNR12, rNR22, rNR32, rNR42 ; envelope = 0
ld [hli], a ; rAUD1ENV, rAUD2ENV, rAUD3LEVEL, rAUD4ENV ; envelope = 0
xor a
ld [hli], a ; rNR13, rNR23, rNR33, rNR43 ; frequency lo = 0
ld [hli], a ; rAUD1LOW, rAUD2LOW, rAUD3LOW, rAUD4POLY ; frequency lo = 0
ld a, $80
ld [hli], a ; rNR14, rNR24, rNR34, rNR44 ; restart sound (freq hi = 0)
ld [hli], a ; rAUD1HIGH, rAUD2HIGH, rAUD3HIGH, rAUD4GO ; restart sound (freq hi = 0)
dec e
jr nz, .clearsound
@ -203,10 +203,10 @@ _UpdateSound::
call FadeMusic
; write volume to hardware register
ld a, [wVolume]
ldh [rNR50], a
ldh [rAUDVOL], a
; write SO on/off to hardware register
ld a, [wSoundOutput]
ldh [rNR51], a
ldh [rAUDTERM], a
ret
UpdateChannels:
@ -250,7 +250,7 @@ UpdateChannels:
jr z, .noPitchSweep
;
ld a, [wPitchSweep]
ldh [rNR10], a
ldh [rAUD1SWEEP], a
.noPitchSweep
bit NOTE_REST, [hl] ; rest
jr nz, .ch1_rest
@ -264,36 +264,36 @@ UpdateChannels:
.ch1_frequency_override
ld a, [wCurTrackFrequency]
ldh [rNR13], a
ldh [rAUD1LOW], a
ld a, [wCurTrackFrequency + 1]
ldh [rNR14], a
ldh [rAUD1HIGH], a
.ch1_check_duty_override
bit NOTE_DUTY_OVERRIDE, [hl]
ret z
ld a, [wCurTrackDuty]
ld d, a
ldh a, [rNR11]
ldh a, [rAUD1LEN]
and $3f ; sound length
or d
ldh [rNR11], a
ldh [rAUD1LEN], a
ret
.ch1_vibrato_override
ld a, [wCurTrackDuty]
ld d, a
ldh a, [rNR11]
ldh a, [rAUD1LEN]
and $3f ; sound length
or d
ldh [rNR11], a
ldh [rAUD1LEN], a
ld a, [wCurTrackFrequency]
ldh [rNR13], a
ldh [rAUD1LOW], a
ret
.ch1_rest
ldh a, [rNR52]
ldh a, [rAUDENA]
and %10001110 ; ch1 off
ldh [rNR52], a
ld hl, rNR10
ldh [rAUDENA], a
ld hl, rAUD1SWEEP
call ClearChannel
ret
@ -301,14 +301,14 @@ UpdateChannels:
ld hl, wCurTrackDuty
ld a, $3f ; sound length
or [hl]
ldh [rNR11], a
ldh [rAUD1LEN], a
ld a, [wCurTrackVolumeEnvelope]
ldh [rNR12], a
ldh [rAUD1ENV], a
ld a, [wCurTrackFrequency]
ldh [rNR13], a
ldh [rAUD1LOW], a
ld a, [wCurTrackFrequency + 1]
or $80
ldh [rNR14], a
ldh [rAUD1HIGH], a
ret
.Channel2:
@ -325,35 +325,35 @@ UpdateChannels:
ret z
ld a, [wCurTrackDuty]
ld d, a
ldh a, [rNR21]
ldh a, [rAUD2LEN]
and $3f ; sound length
or d
ldh [rNR21], a
ldh [rAUD2LEN], a
ret
.ch2_frequency_override ; unreferenced
ld a, [wCurTrackFrequency]
ldh [rNR23], a
ldh [rAUD2LOW], a
ld a, [wCurTrackFrequency + 1]
ldh [rNR24], a
ldh [rAUD2HIGH], a
ret
.ch2_vibrato_override
ld a, [wCurTrackDuty]
ld d, a
ldh a, [rNR21]
ldh a, [rAUD2LEN]
and $3f ; sound length
or d
ldh [rNR21], a
ldh [rAUD2LEN], a
ld a, [wCurTrackFrequency]
ldh [rNR23], a
ldh [rAUD2LOW], a
ret
.ch2_rest
ldh a, [rNR52]
ldh a, [rAUDENA]
and %10001101 ; ch2 off
ldh [rNR52], a
ld hl, rNR21 - 1 ; there is no rNR20
ldh [rAUDENA], a
ld hl, rAUD2LEN - 1 ; there is no rNR20
call ClearChannel
ret
@ -361,14 +361,14 @@ UpdateChannels:
ld hl, wCurTrackDuty
ld a, $3f ; sound length
or [hl]
ldh [rNR21], a
ldh [rAUD2LEN], a
ld a, [wCurTrackVolumeEnvelope]
ldh [rNR22], a
ldh [rAUD2ENV], a
ld a, [wCurTrackFrequency]
ldh [rNR23], a
ldh [rAUD2LOW], a
ld a, [wCurTrackFrequency + 1]
or $80 ; initial (restart)
ldh [rNR24], a
ldh [rAUD2HIGH], a
ret
.Channel3:
@ -385,37 +385,37 @@ UpdateChannels:
.ch3_frequency_override ; unreferenced
ld a, [wCurTrackFrequency]
ldh [rNR33], a
ldh [rAUD3LOW], a
ld a, [wCurTrackFrequency + 1]
ldh [rNR34], a
ldh [rAUD3HIGH], a
ret
.ch3_vibrato_override
ld a, [wCurTrackFrequency]
ldh [rNR33], a
ldh [rAUD3LOW], a
ret
.ch3_rest
ldh a, [rNR52]
ldh a, [rAUDENA]
and %10001011 ; ch3 off
ldh [rNR52], a
ld hl, rNR30
ldh [rAUDENA], a
ld hl, rAUD3ENA
call ClearChannel
ret
.ch3_noise_sampling
ld a, $3f ; sound length
ldh [rNR31], a
ldh [rAUD3LEN], a
xor a
ldh [rNR30], a
ldh [rAUD3ENA], a
call .load_wave_pattern
ld a, $80
ldh [rNR30], a
ldh [rAUD3ENA], a
ld a, [wCurTrackFrequency]
ldh [rNR33], a
ldh [rAUD3LOW], a
ld a, [wCurTrackFrequency + 1]
or $80
ldh [rNR34], a
ldh [rAUD3HIGH], a
ret
.load_wave_pattern
@ -432,44 +432,44 @@ rept 4
endr
ld de, WaveSamples
add hl, de
; load wavepattern into rWave_0-rWave_f
; load wavepattern into rAUD3WAVE_0-rAUD3WAVE_F
ld a, [hli]
ldh [rWave_0], a
ldh [rAUD3WAVE_0], a
ld a, [hli]
ldh [rWave_1], a
ldh [rAUD3WAVE_1], a
ld a, [hli]
ldh [rWave_2], a
ldh [rAUD3WAVE_2], a
ld a, [hli]
ldh [rWave_3], a
ldh [rAUD3WAVE_3], a
ld a, [hli]
ldh [rWave_4], a
ldh [rAUD3WAVE_4], a
ld a, [hli]
ldh [rWave_5], a
ldh [rAUD3WAVE_5], a
ld a, [hli]
ldh [rWave_6], a
ldh [rAUD3WAVE_6], a
ld a, [hli]
ldh [rWave_7], a
ldh [rAUD3WAVE_7], a
ld a, [hli]
ldh [rWave_8], a
ldh [rAUD3WAVE_8], a
ld a, [hli]
ldh [rWave_9], a
ldh [rAUD3WAVE_9], a
ld a, [hli]
ldh [rWave_a], a
ldh [rAUD3WAVE_A], a
ld a, [hli]
ldh [rWave_b], a
ldh [rAUD3WAVE_B], a
ld a, [hli]
ldh [rWave_c], a
ldh [rAUD3WAVE_C], a
ld a, [hli]
ldh [rWave_d], a
ldh [rAUD3WAVE_D], a
ld a, [hli]
ldh [rWave_e], a
ldh [rAUD3WAVE_E], a
ld a, [hli]
ldh [rWave_f], a
ldh [rAUD3WAVE_F], a
pop hl
ld a, [wCurTrackVolumeEnvelope]
and $f0
sla a
ldh [rNR32], a
ldh [rAUD3LEVEL], a
ret
.Channel4:
@ -484,26 +484,26 @@ endr
.ch4_frequency_override ; unreferenced
ld a, [wCurTrackFrequency]
ldh [rNR43], a
ldh [rAUD4POLY], a
ret
.ch4_rest
ldh a, [rNR52]
ldh a, [rAUDENA]
and %10000111 ; ch4 off
ldh [rNR52], a
ld hl, rNR41 - 1 ; there is no rNR40
ldh [rAUDENA], a
ld hl, rAUD4LEN - 1 ; there is no rNR40
call ClearChannel
ret
.ch4_noise_sampling
ld a, $3f ; sound length
ldh [rNR41], a
ldh [rAUD4LEN], a
ld a, [wCurTrackVolumeEnvelope]
ldh [rNR42], a
ldh [rAUD4ENV], a
ld a, [wCurTrackFrequency]
ldh [rNR43], a
ldh [rAUD4POLY], a
ld a, $80
ldh [rNR44], a
ldh [rAUD4GO], a
ret
_CheckSFX:
@ -557,15 +557,15 @@ PlayDanger:
.applychannel
xor a
ldh [rNR10], a
ldh [rAUD1SWEEP], a
ld a, [hli]
ldh [rNR11], a
ldh [rAUD1LEN], a
ld a, [hli]
ldh [rNR12], a
ldh [rAUD1ENV], a
ld a, [hli]
ldh [rNR13], a
ldh [rAUD1LOW], a
ld a, [hli]
ldh [rNR14], a
ldh [rAUD1HIGH], a
.increment
ld a, d
@ -1227,7 +1227,7 @@ ParseMusic:
jr nz, .ok
; sweep = 0
xor a
ldh [rNR10], a
ldh [rAUD1SWEEP], a
.ok
; stop playing
; turn channel off
@ -2476,56 +2476,56 @@ _PlaySFX::
jr z, .ch6
res SOUND_CHANNEL_ON, [hl] ; turn it off
xor a
ldh [rNR11], a ; length/wavepattern = 0
ldh [rAUD1LEN], a ; length/wavepattern = 0
ld a, $8
ldh [rNR12], a ; envelope = 0
ldh [rAUD1ENV], a ; envelope = 0
xor a
ldh [rNR13], a ; frequency lo = 0
ldh [rAUD1LOW], a ; frequency lo = 0
ld a, $80
ldh [rNR14], a ; restart sound (freq hi = 0)
ldh [rAUD1HIGH], a ; restart sound (freq hi = 0)
xor a
ld [wPitchSweep], a ; pitch sweep off
ldh [rNR10], a ; pitch sweep off
ldh [rAUD1SWEEP], a ; pitch sweep off
.ch6
ld hl, wChannel6Flags1
bit SOUND_CHANNEL_ON, [hl]
jr z, .ch7
res SOUND_CHANNEL_ON, [hl] ; turn it off
xor a
ldh [rNR21], a ; length/wavepattern = 0
ldh [rAUD2LEN], a ; length/wavepattern = 0
ld a, $8
ldh [rNR22], a ; envelope = 0
ldh [rAUD2ENV], a ; envelope = 0
xor a
ldh [rNR23], a ; frequency lo = 0
ldh [rAUD2LOW], a ; frequency lo = 0
ld a, $80
ldh [rNR24], a ; restart sound (freq hi = 0)
ldh [rAUD2HIGH], a ; restart sound (freq hi = 0)
.ch7
ld hl, wChannel7Flags1
bit SOUND_CHANNEL_ON, [hl]
jr z, .ch8
res SOUND_CHANNEL_ON, [hl] ; turn it off
xor a
ldh [rNR30], a ; sound mode #3 off
ldh [rNR31], a ; length/wavepattern = 0
ldh [rAUD3ENA], a ; sound mode #3 off
ldh [rAUD3LEN], a ; length/wavepattern = 0
ld a, $8
ldh [rNR32], a ; envelope = 0
ldh [rAUD3LEVEL], a ; envelope = 0
xor a
ldh [rNR33], a ; frequency lo = 0
ldh [rAUD3LOW], a ; frequency lo = 0
ld a, $80
ldh [rNR34], a ; restart sound (freq hi = 0)
ldh [rAUD3HIGH], a ; restart sound (freq hi = 0)
.ch8
ld hl, wChannel8Flags1
bit SOUND_CHANNEL_ON, [hl]
jr z, .chscleared
res SOUND_CHANNEL_ON, [hl] ; turn it off
xor a
ldh [rNR41], a ; length/wavepattern = 0
ldh [rAUD4LEN], a ; length/wavepattern = 0
ld a, $8
ldh [rNR42], a ; envelope = 0
ldh [rAUD4ENV], a ; envelope = 0
xor a
ldh [rNR43], a ; frequency lo = 0
ldh [rAUD4POLY], a ; frequency lo = 0
ld a, $80
ldh [rNR44], a ; restart sound (freq hi = 0)
ldh [rAUD4GO], a ; restart sound (freq hi = 0)
xor a
ld [wNoiseSampleAddress], a
ld [wNoiseSampleAddress + 1], a
@ -2798,13 +2798,13 @@ ChannelPointers:
ClearChannels::
; runs ClearChannel for all 4 channels
ld hl, rNR50
ld hl, rAUDVOL
xor a
ld [hli], a
ld [hli], a
ld a, $80
ld [hli], a
ld hl, rNR10
ld hl, rAUD1SWEEP
ld e, NUM_MUSIC_CHANS
.loop
call ClearChannel
@ -2813,20 +2813,20 @@ ClearChannels::
ret
ClearChannel:
; input: hl = beginning hw sound register (rNR10, rNR20, rNR30, rNR40)
; input: hl = beginning hw sound register (rAUD1SWEEP, rNR20, rAUD3ENA, rNR40)
; output: 00 00 80 00 80
; sound channel 1 2 3 4
xor a
ld [hli], a ; rNR10, rNR20, rNR30, rNR40 ; sweep = 0
ld [hli], a ; rAUD1SWEEP, rNR20, rAUD3ENA, rNR40 ; sweep = 0
ld [hli], a ; rNR11, rNR21, rNR31, rNR41 ; length/wavepattern = 0
ld [hli], a ; rAUD1LEN, rAUD2LEN, rAUD3LEN, rAUD4LEN ; length/wavepattern = 0
ld a, $8
ld [hli], a ; rNR12, rNR22, rNR32, rNR42 ; envelope = 0
ld [hli], a ; rAUD1ENV, rAUD2ENV, rAUD3LEVEL, rAUD4ENV ; envelope = 0
xor a
ld [hli], a ; rNR13, rNR23, rNR33, rNR43 ; frequency lo = 0
ld [hli], a ; rAUD1LOW, rAUD2LOW, rAUD3LOW, rAUD4POLY ; frequency lo = 0
ld a, $80
ld [hli], a ; rNR14, rNR24, rNR34, rNR44 ; restart sound (freq hi = 0)
ld [hli], a ; rAUD1HIGH, rAUD2HIGH, rAUD3HIGH, rAUD4GO ; restart sound (freq hi = 0)
ret
PlayTrainerEncounterMusic::

View File

@ -1,21 +1,7 @@
DEF TILE_WIDTH EQU 8 ; pixels
DEF LEN_1BPP_TILE EQU 1 * TILE_WIDTH ; bytes
DEF LEN_2BPP_TILE EQU 2 * TILE_WIDTH ; bytes
DEF NUM_PAL_COLORS EQU 4
DEF PAL_COLOR_SIZE EQU 2
DEF PALETTE_SIZE EQU NUM_PAL_COLORS * PAL_COLOR_SIZE
DEF TILE_1BPP_SIZE EQU TILE_SIZE / 2 ; bytes
DEF PALRGB_WHITE EQU palred 31 + palgreen 31 + palblue 31 ; $7fff
DEF SCREEN_WIDTH EQU 20 ; tiles
DEF SCREEN_HEIGHT EQU 18 ; tiles
DEF SCREEN_WIDTH_PX EQU SCREEN_WIDTH * TILE_WIDTH ; pixels
DEF SCREEN_HEIGHT_PX EQU SCREEN_HEIGHT * TILE_WIDTH ; pixels
DEF BG_MAP_WIDTH EQU 32 ; tiles
DEF BG_MAP_HEIGHT EQU 32 ; tiles
DEF METATILE_WIDTH EQU 4 ; tiles
DEF SCREEN_META_WIDTH EQU 6 ; metatiles
DEF SCREEN_META_HEIGHT EQU 5 ; metatiles
@ -33,15 +19,6 @@ DEF HP_GREEN EQU 0
DEF HP_YELLOW EQU 1
DEF HP_RED EQU 2
; sprite_oam_struct members (see macros/ram.asm)
rsreset
DEF SPRITEOAMSTRUCT_YCOORD rb ; 0
DEF SPRITEOAMSTRUCT_XCOORD rb ; 1
DEF SPRITEOAMSTRUCT_TILE_ID rb ; 2
DEF SPRITEOAMSTRUCT_ATTRIBUTES rb ; 3
DEF SPRITEOAMSTRUCT_LENGTH EQU _RS
DEF NUM_SPRITE_OAM_STRUCTS EQU 40 ; see wShadowOAM
DEF SPRITE_GFX_LIST_CAPACITY EQU 12 ; see wUsedSprites
DEF OAM_YCOORD_HIDDEN EQU 160 ; hides an OAM offscreen

929
constants/hardware.inc Normal file
View File

@ -0,0 +1,929 @@
;******************************************************************************
; Game Boy hardware constant definitions
; https://github.com/gbdev/hardware.inc
;******************************************************************************
; To the extent possible under law, the authors of this work have
; waived all copyright and related or neighboring rights to the work.
; See https://creativecommons.org/publicdomain/zero/1.0/ for details.
; SPDX-License-Identifier: CC0-1.0
; If this file was already included, don't do it again
if !def(HARDWARE_INC)
; Check for the minimum supported RGBDS version
if !def(__RGBDS_MAJOR__) || !def(__RGBDS_MINOR__) || !def(__RGBDS_PATCH__)
fail "This version of 'hardware.inc' requires RGBDS version 0.5.0 or later"
endc
if __RGBDS_MAJOR__ == 0 && __RGBDS_MINOR__ < 5
fail "This version of 'hardware.inc' requires RGBDS version 0.5.0 or later."
endc
; Define the include guard and the current hardware.inc version
; (do this after the RGBDS version check since the `def` syntax depends on it)
def HARDWARE_INC equ 1
def HARDWARE_INC_VERSION equs "5.0.0"
; Usage: rev_Check_hardware_inc <min_ver>
; Examples:
; rev_Check_hardware_inc 1.2.3
; rev_Check_hardware_inc 1.2 (equivalent to 1.2.0)
; rev_Check_hardware_inc 1 (equivalent to 1.0.0)
MACRO rev_Check_hardware_inc
if _NARG == 1 ; Actual invocation by the user
def hw_inc_cur_ver\@ equs strrpl("{HARDWARE_INC_VERSION}", ".", ",")
def hw_inc_min_ver\@ equs strrpl("\1", ".", ",")
rev_Check_hardware_inc {hw_inc_cur_ver\@}, {hw_inc_min_ver\@}, 0, 0
purge hw_inc_cur_ver\@, hw_inc_min_ver\@
else ; Recursive invocation
if \1 != \4 || (\2 < \5 || (\2 == \5 && \3 < \6))
fail "Version \1.\2.\3 of 'hardware.inc' is incompatible with requested version \4.\5.\6"
endc
endc
ENDM
;******************************************************************************
; Memory-mapped registers ($FFxx range)
;******************************************************************************
; -- JOYP / P1 ($FF00) --------------------------------------------------------
; Joypad face buttons
def rJOYP equ $FF00
def B_JOYP_GET_BUTTONS equ 5 ; 0 = reading buttons [r/w]
def B_JOYP_GET_CTRL_PAD equ 4 ; 0 = reading Control Pad [r/w]
def JOYP_GET equ %00_11_0000 ; select which inputs to read from the lower nybble
def JOYP_GET_BUTTONS equ %00_01_0000 ; reading A/B/Select/Start buttons
def JOYP_GET_CTRL_PAD equ %00_10_0000 ; reading Control Pad directions
def JOYP_GET_NONE equ %00_11_0000 ; reading nothing
def B_JOYP_START equ 3 ; 0 = Start is pressed (if reading buttons) [ro]
def B_JOYP_SELECT equ 2 ; 0 = Select is pressed (if reading buttons) [ro]
def B_JOYP_B equ 1 ; 0 = B is pressed (if reading buttons) [ro]
def B_JOYP_A equ 0 ; 0 = A is pressed (if reading buttons) [ro]
def B_JOYP_DOWN equ 3 ; 0 = Down is pressed (if reading Control Pad) [ro]
def B_JOYP_UP equ 2 ; 0 = Up is pressed (if reading Control Pad) [ro]
def B_JOYP_LEFT equ 1 ; 0 = Left is pressed (if reading Control Pad) [ro]
def B_JOYP_RIGHT equ 0 ; 0 = Right is pressed (if reading Control Pad) [ro]
def JOYP_INPUTS equ %0000_1111
def JOYP_START equ 1 << B_JOYP_START
def JOYP_SELECT equ 1 << B_JOYP_SELECT
def JOYP_B equ 1 << B_JOYP_B
def JOYP_A equ 1 << B_JOYP_A
def JOYP_DOWN equ 1 << B_JOYP_DOWN
def JOYP_UP equ 1 << B_JOYP_UP
def JOYP_LEFT equ 1 << B_JOYP_LEFT
def JOYP_RIGHT equ 1 << B_JOYP_RIGHT
; Combined input byte, with Control Pad in high nybble (conventional order)
def B_PAD_DOWN equ 7
def B_PAD_UP equ 6
def B_PAD_LEFT equ 5
def B_PAD_RIGHT equ 4
def B_PAD_START equ 3
def B_PAD_SELECT equ 2
def B_PAD_B equ 1
def B_PAD_A equ 0
def PAD_DOWN equ 1 << B_PAD_DOWN
def PAD_UP equ 1 << B_PAD_UP
def PAD_LEFT equ 1 << B_PAD_LEFT
def PAD_RIGHT equ 1 << B_PAD_RIGHT
def PAD_START equ 1 << B_PAD_START
def PAD_SELECT equ 1 << B_PAD_SELECT
def PAD_B equ 1 << B_PAD_B
def PAD_A equ 1 << B_PAD_A
; Combined input byte, with Control Pad in low nybble (swapped order)
def B_PAD_SWAP_START equ 7
def B_PAD_SWAP_SELECT equ 6
def B_PAD_SWAP_B equ 5
def B_PAD_SWAP_A equ 4
def B_PAD_SWAP_DOWN equ 3
def B_PAD_SWAP_UP equ 2
def B_PAD_SWAP_LEFT equ 1
def B_PAD_SWAP_RIGHT equ 0
def PAD_SWAP_START equ 1 << B_PAD_SWAP_START
def PAD_SWAP_SELECT equ 1 << B_PAD_SWAP_SELECT
def PAD_SWAP_B equ 1 << B_PAD_SWAP_B
def PAD_SWAP_A equ 1 << B_PAD_SWAP_A
def PAD_SWAP_DOWN equ 1 << B_PAD_SWAP_DOWN
def PAD_SWAP_UP equ 1 << B_PAD_SWAP_UP
def PAD_SWAP_LEFT equ 1 << B_PAD_SWAP_LEFT
def PAD_SWAP_RIGHT equ 1 << B_PAD_SWAP_RIGHT
; -- SB ($FF01) ---------------------------------------------------------------
; Serial transfer data [r/w]
def rSB equ $FF01
; -- SC ($FF02) ---------------------------------------------------------------
; Serial transfer control
def rSC equ $FF02
def B_SC_START equ 7 ; reading 1 = transfer in progress, writing 1 = start transfer [r/w]
def B_SC_SPEED equ 1 ; (CGB only) 1 = use faster internal clock [r/w]
def B_SC_SOURCE equ 0 ; 0 = use external clock ("slave"), 1 = use internal clock ("master") [r/w]
def SC_START equ 1 << B_SC_START
def SC_SPEED equ 1 << B_SC_SPEED
def SC_SLOW equ 0 << B_SC_SPEED
def SC_FAST equ 1 << B_SC_SPEED
def SC_SOURCE equ 1 << B_SC_SOURCE
def SC_EXTERNAL equ 0 << B_SC_SOURCE
def SC_INTERNAL equ 1 << B_SC_SOURCE
; -- $FF03 is unused ----------------------------------------------------------
; -- DIV ($FF04) --------------------------------------------------------------
; Divider register [r/w]
def rDIV equ $FF04
; -- TIMA ($FF05) -------------------------------------------------------------
; Timer counter [r/w]
def rTIMA equ $FF05
; -- TMA ($FF06) --------------------------------------------------------------
; Timer modulo [r/w]
def rTMA equ $FF06
; -- TAC ($FF07) --------------------------------------------------------------
; Timer control
def rTAC equ $FF07
def B_TAC_START equ 2 ; enable incrementing TIMA [r/w]
def TAC_STOP equ 0 << B_TAC_START
def TAC_START equ 1 << B_TAC_START
def TAC_CLOCK equ %000000_11 ; the frequency at which TIMA increments [r/w]
def TAC_4KHZ equ %000000_00 ; every 256 M-cycles = ~4 KHz on DMG
def TAC_262KHZ equ %000000_01 ; every 4 M-cycles = ~262 KHz on DMG
def TAC_65KHZ equ %000000_10 ; every 16 M-cycles = ~65 KHz on DMG
def TAC_16KHZ equ %000000_11 ; every 64 M-cycles = ~16 KHz on DMG
; -- $FF08-$FF0E are unused ---------------------------------------------------
; -- IF ($FF0F) ---------------------------------------------------------------
; Pending interrupts
def rIF equ $FF0F
def B_IF_JOYPAD equ 4 ; 1 = joypad interrupt is pending [r/w]
def B_IF_SERIAL equ 3 ; 1 = serial interrupt is pending [r/w]
def B_IF_TIMER equ 2 ; 1 = timer interrupt is pending [r/w]
def B_IF_STAT equ 1 ; 1 = STAT interrupt is pending [r/w]
def B_IF_VBLANK equ 0 ; 1 = VBlank interrupt is pending [r/w]
def IF_JOYPAD equ 1 << B_IF_JOYPAD
def IF_SERIAL equ 1 << B_IF_SERIAL
def IF_TIMER equ 1 << B_IF_TIMER
def IF_STAT equ 1 << B_IF_STAT
def IF_VBLANK equ 1 << B_IF_VBLANK
; -- AUD1SWEEP / NR10 ($FF10) -------------------------------------------------
; Audio channel 1 sweep
def rAUD1SWEEP equ $FF10
def AUD1SWEEP_TIME equ %0_111_0000 ; how long between sweep iterations
; (in 128 Hz ticks, ~7.8 ms apart) [r/w]
def B_AUD1SWEEP_DIR equ 3 ; sweep direction [r/w]
def AUD1SWEEP_DIR equ 1 << B_AUD1SWEEP_DIR
def AUD1SWEEP_UP equ 0 << B_AUD1SWEEP_DIR
def AUD1SWEEP_DOWN equ 1 << B_AUD1SWEEP_DIR
def AUD1SWEEP_SHIFT equ %00000_111 ; how much the period increases/decreases per iteration [r/w]
; -- AUD1LEN / NR11 ($FF11) ---------------------------------------------------
; Audio channel 1 length timer and duty cycle
def rAUD1LEN equ $FF11
def AUD1LEN_DUTY equ %11_000000 ; ratio of time spent high vs. time spent low [r/w]
def AUD1LEN_DUTY_12_5 equ %00_000000 ; 12.5%
def AUD1LEN_DUTY_25 equ %01_000000 ; 25%
def AUD1LEN_DUTY_50 equ %10_000000 ; 50%
def AUD1LEN_DUTY_75 equ %11_000000 ; 75%
def AUD1LEN_TIMER equ %00_111111 ; initial length timer (0-63) [wo]
; -- AUD1ENV / NR12 ($FF12) ---------------------------------------------------
; Audio channel 1 volume and envelope
def rAUD1ENV equ $FF12
def AUD1ENV_INIT_VOLUME equ %1111_0000 ; initial volume [r/w]
def B_AUD1ENV_DIR equ 3 ; direction of volume envelope [r/w]
def AUD1ENV_DIR equ 1 << B_AUD1ENV_DIR
def AUD1ENV_DOWN equ 0 << B_AUD1ENV_DIR
def AUD1ENV_UP equ 1 << B_AUD1ENV_DIR
def AUD1ENV_PACE equ %00000_111 ; how long between envelope iterations
; (in 64 Hz ticks, ~15.6 ms apart) [r/w]
; -- AUD1LOW / NR13 ($FF13) ---------------------------------------------------
; Audio channel 1 period (low 8 bits) [r/w]
def rAUD1LOW equ $FF13
; -- AUD1HIGH / NR14 ($FF14) --------------------------------------------------
; Audio channel 1 period (high 3 bits) and control
def rAUD1HIGH equ $FF14
def B_AUD1HIGH_RESTART equ 7 ; 1 = restart the channel [wo]
def B_AUD1HIGH_LEN_ENABLE equ 6 ; 1 = reset the channel after the length timer expires [r/w]
def AUD1HIGH_RESTART equ 1 << B_AUD1HIGH_RESTART
def AUD1HIGH_LENGTH_OFF equ 0 << B_AUD1HIGH_LEN_ENABLE
def AUD1HIGH_LENGTH_ON equ 1 << B_AUD1HIGH_LEN_ENABLE
def AUD1HIGH_PERIOD_HIGH equ %00000_111 ; upper 3 bits of the channel's period [r/w]
; -- $FF15 is unused ----------------------------------------------------------
; -- AUD2LEN / NR21 ($FF16) ---------------------------------------------------
; Audio channel 2 length timer and duty cycle
def rAUD2LEN equ $FF16
def AUD2LEN_DUTY equ %11_000000 ; ratio of time spent high vs. time spent low [r/w]
def AUD2LEN_DUTY_12_5 equ %00_000000 ; 12.5%
def AUD2LEN_DUTY_25 equ %01_000000 ; 25%
def AUD2LEN_DUTY_50 equ %10_000000 ; 50%
def AUD2LEN_DUTY_75 equ %11_000000 ; 75%
def AUD2LEN_TIMER equ %00_111111 ; initial length timer (0-63) [wo]
; -- AUD2ENV / NR22 ($FF17) ---------------------------------------------------
; Audio channel 2 volume and envelope
def rAUD2ENV equ $FF17
def AUD2ENV_INIT_VOLUME equ %1111_0000 ; initial volume [r/w]
def B_AUD2ENV_DIR equ 3 ; direction of volume envelope [r/w]
def AUD2ENV_DIR equ 1 << B_AUD2ENV_DIR
def AUD2ENV_DOWN equ 0 << B_AUD2ENV_DIR
def AUD2ENV_UP equ 1 << B_AUD2ENV_DIR
def AUD2ENV_PACE equ %00000_111 ; how long between envelope iterations
; (in 64 Hz ticks, ~15.6 ms apart) [r/w]
; -- AUD2LOW / NR23 ($FF18) ---------------------------------------------------
; Audio channel 2 period (low 8 bits) [r/w]
def rAUD2LOW equ $FF18
; -- AUD2HIGH / NR24 ($FF19) --------------------------------------------------
; Audio channel 2 period (high 3 bits) and control
def rAUD2HIGH equ $FF19
def B_AUD2HIGH_RESTART equ 7 ; 1 = restart the channel [wo]
def B_AUD2HIGH_LEN_ENABLE equ 6 ; 1 = reset the channel after the length timer expires [r/w]
def AUD2HIGH_RESTART equ 1 << B_AUD2HIGH_RESTART
def AUD2HIGH_LENGTH_OFF equ 0 << B_AUD2HIGH_LEN_ENABLE
def AUD2HIGH_LENGTH_ON equ 1 << B_AUD2HIGH_LEN_ENABLE
def AUD2HIGH_PERIOD_HIGH equ %00000_111 ; upper 3 bits of the channel's period [r/w]
; -- AUD3ENA / NR30 ($FF1A) ---------------------------------------------------
; Audio channel 3 enable
def rAUD3ENA equ $FF1A
def B_AUD3ENA_ENABLE equ 7 ; 1 = channel is active [r/w]
def AUD3ENA_OFF equ 0 << B_AUD3ENA_ENABLE
def AUD3ENA_ON equ 1 << B_AUD3ENA_ENABLE
; -- AUD3LEN / NR31 ($FF1B) ---------------------------------------------------
; Audio channel 3 length timer [wo]
def rAUD3LEN equ $FF1B
; -- AUD3LEVEL / NR32 ($FF1C) -------------------------------------------------
; Audio channel 3 volume
def rAUD3LEVEL equ $FF1C
def AUD3LEVEL_VOLUME equ %0_11_00000 ; volume level [r/w]
def AUD3LEVEL_MUTE equ %0_00_00000 ; 0% (muted)
def AUD3LEVEL_100 equ %0_01_00000 ; 100%
def AUD3LEVEL_50 equ %0_10_00000 ; 50%
def AUD3LEVEL_25 equ %0_11_00000 ; 25%
; -- AUD3LOW / NR33 ($FF1D) ---------------------------------------------------
; Audio channel 3 period (low 8 bits) [r/w]
def rAUD3LOW equ $FF1D
; -- AUD3HIGH / NR34 ($FF1E) --------------------------------------------------
; Audio channel 3 period (high 3 bits) and control
def rAUD3HIGH equ $FF1E
def B_AUD3HIGH_RESTART equ 7 ; 1 = restart the channel [wo]
def B_AUD3HIGH_LEN_ENABLE equ 6 ; 1 = reset the channel after the length timer expires [r/w]
def AUD3HIGH_RESTART equ 1 << B_AUD3HIGH_RESTART
def AUD3HIGH_LENGTH_OFF equ 0 << B_AUD3HIGH_LEN_ENABLE
def AUD3HIGH_LENGTH_ON equ 1 << B_AUD3HIGH_LEN_ENABLE
def AUD3HIGH_PERIOD_HIGH equ %00000_111 ; upper 3 bits of the channel's period [r/w]
; -- $FF1F is unused ----------------------------------------------------------
; -- AUD4LEN / NR41 ($FF20) ---------------------------------------------------
; Audio channel 4 length timer
def rAUD4LEN equ $FF20
def AUD4LEN_TIMER equ %00_111111 ; initial length timer (0-63) [wo]
; -- AUD4ENV / NR42 ($FF21) ---------------------------------------------------
; Audio channel 4 volume and envelope
def rAUD4ENV equ $FF21
def AUD4ENV_INIT_VOLUME equ %1111_0000 ; initial volume [r/w]
def B_AUD4ENV_DIR equ 3 ; direction of volume envelope [r/w]
def AUD4ENV_DIR equ 1 << B_AUD4ENV_DIR
def AUD4ENV_DOWN equ 0 << B_AUD4ENV_DIR
def AUD4ENV_UP equ 1 << B_AUD4ENV_DIR
def AUD4ENV_PACE equ %00000_111 ; how long between envelope iterations
; (in 64 Hz ticks, ~15.6 ms apart) [r/w]
; -- AUD4POLY / NR43 ($FF22) --------------------------------------------------
; Audio channel 4 period and randomness
def rAUD4POLY equ $FF22
def AUD4POLY_SHIFT equ %1111_0000 ; coarse control of the channel's period [r/w]
def B_AUD4POLY_WIDTH equ 3 ; controls the noise generator (LFSR)'s step width [r/w]
def AUD4POLY_15STEP equ 0 << B_AUD4POLY_WIDTH
def AUD4POLY_7STEP equ 1 << B_AUD4POLY_WIDTH
def AUD4POLY_DIV equ %00000_111 ; fine control of the channel's period [r/w]
; -- AUD4GO / NR44 ($FF23) ----------------------------------------------------
; Audio channel 4 control
def rAUD4GO equ $FF23
def B_AUD4GO_RESTART equ 7 ; 1 = restart the channel [wo]
def B_AUD4GO_LEN_ENABLE equ 6 ; 1 = reset the channel after the length timer expires [r/w]
def AUD4GO_RESTART equ 1 << B_AUD4GO_RESTART
def AUD4GO_LENGTH_OFF equ 0 << B_AUD4GO_LEN_ENABLE
def AUD4GO_LENGTH_ON equ 1 << B_AUD4GO_LEN_ENABLE
; -- AUDVOL / NR50 ($FF24) ----------------------------------------------------
; Audio master volume and VIN mixer
def rAUDVOL equ $FF24
def B_AUDVOL_VIN_LEFT equ 7 ; 1 = output VIN to left ear (SO2, speaker 2) [r/w]
def AUDVOL_VIN_LEFT equ 1 << B_AUDVOL_VIN_LEFT
def AUDVOL_LEFT equ %0_111_0000 ; 0 = barely audible, 7 = full volume [r/w]
def B_AUDVOL_VIN_RIGHT equ 3 ; 1 = output VIN to right ear (SO1, speaker 1) [r/w]
def AUDVOL_VIN_RIGHT equ 1 << B_AUDVOL_VIN_RIGHT
def AUDVOL_RIGHT equ %00000_111 ; 0 = barely audible, 7 = full volume [r/w]
; -- AUDTERM / NR51 ($FF25) ---------------------------------------------------
; Audio channel mixer
def rAUDTERM equ $FF25
def B_AUDTERM_4_LEFT equ 7 ; 1 = output channel 4 to left ear [r/w]
def B_AUDTERM_3_LEFT equ 6 ; 1 = output channel 3 to left ear [r/w]
def B_AUDTERM_2_LEFT equ 5 ; 1 = output channel 2 to left ear [r/w]
def B_AUDTERM_1_LEFT equ 4 ; 1 = output channel 1 to left ear [r/w]
def B_AUDTERM_4_RIGHT equ 3 ; 1 = output channel 4 to right ear [r/w]
def B_AUDTERM_3_RIGHT equ 2 ; 1 = output channel 3 to right ear [r/w]
def B_AUDTERM_2_RIGHT equ 1 ; 1 = output channel 2 to right ear [r/w]
def B_AUDTERM_1_RIGHT equ 0 ; 1 = output channel 1 to right ear [r/w]
def AUDTERM_4_LEFT equ 1 << B_AUDTERM_4_LEFT
def AUDTERM_3_LEFT equ 1 << B_AUDTERM_3_LEFT
def AUDTERM_2_LEFT equ 1 << B_AUDTERM_2_LEFT
def AUDTERM_1_LEFT equ 1 << B_AUDTERM_1_LEFT
def AUDTERM_4_RIGHT equ 1 << B_AUDTERM_4_RIGHT
def AUDTERM_3_RIGHT equ 1 << B_AUDTERM_3_RIGHT
def AUDTERM_2_RIGHT equ 1 << B_AUDTERM_2_RIGHT
def AUDTERM_1_RIGHT equ 1 << B_AUDTERM_1_RIGHT
; -- AUDENA / NR52 ($FF26) ----------------------------------------------------
; Audio master enable
def rAUDENA equ $FF26
def B_AUDENA_ENABLE equ 7 ; 0 = disable the APU (resets all audio registers to 0!) [r/w]
def B_AUDENA_ENABLE_CH4 equ 3 ; 1 = channel 4 is running [ro]
def B_AUDENA_ENABLE_CH3 equ 2 ; 1 = channel 3 is running [ro]
def B_AUDENA_ENABLE_CH2 equ 1 ; 1 = channel 2 is running [ro]
def B_AUDENA_ENABLE_CH1 equ 0 ; 1 = channel 1 is running [ro]
def AUDENA_OFF equ 0 << B_AUDENA_ENABLE
def AUDENA_ON equ 1 << B_AUDENA_ENABLE
def AUDENA_CH4_OFF equ 0 << B_AUDENA_ENABLE_CH4
def AUDENA_CH4_ON equ 1 << B_AUDENA_ENABLE_CH4
def AUDENA_CH3_OFF equ 0 << B_AUDENA_ENABLE_CH3
def AUDENA_CH3_ON equ 1 << B_AUDENA_ENABLE_CH3
def AUDENA_CH2_OFF equ 0 << B_AUDENA_ENABLE_CH2
def AUDENA_CH2_ON equ 1 << B_AUDENA_ENABLE_CH2
def AUDENA_CH1_OFF equ 0 << B_AUDENA_ENABLE_CH1
def AUDENA_CH1_ON equ 1 << B_AUDENA_ENABLE_CH1
; -- $FF27-$FF2F are unused ---------------------------------------------------
; -- AUD3WAVE ($FF30-$FF3F) ---------------------------------------------------
; Audio channel 3 wave pattern RAM [r/w]
def _AUD3WAVERAM equ $FF30 ; $FF30-$FF3F
def rAUD3WAVE_0 equ $FF30
def rAUD3WAVE_1 equ $FF31
def rAUD3WAVE_2 equ $FF32
def rAUD3WAVE_3 equ $FF33
def rAUD3WAVE_4 equ $FF34
def rAUD3WAVE_5 equ $FF35
def rAUD3WAVE_6 equ $FF36
def rAUD3WAVE_7 equ $FF37
def rAUD3WAVE_8 equ $FF38
def rAUD3WAVE_9 equ $FF39
def rAUD3WAVE_A equ $FF3A
def rAUD3WAVE_B equ $FF3B
def rAUD3WAVE_C equ $FF3C
def rAUD3WAVE_D equ $FF3D
def rAUD3WAVE_E equ $FF3E
def rAUD3WAVE_F equ $FF3F
def AUD3WAVE_SIZE equ 16
; -- LCDC ($FF40) -------------------------------------------------------------
; PPU graphics control
def rLCDC equ $FF40
def B_LCDC_ENABLE equ 7 ; whether the PPU (and LCD) are turned on [r/w]
def B_LCDC_WIN_MAP equ 6 ; which tilemap the Window reads from [r/w]
def B_LCDC_WINDOW equ 5 ; whether the Window is enabled [r/w]
def B_LCDC_BLOCKS equ 4 ; which "tile blocks" the BG and Window use [r/w]
def B_LCDC_BG_MAP equ 3 ; which tilemap the BG reads from [r/w]
def B_LCDC_OBJ_SIZE equ 2 ; how many pixels tall each OBJ is [r/w]
def B_LCDC_OBJS equ 1 ; whether OBJs are enabled [r/w]
def B_LCDC_BG equ 0 ; (DMG only) whether the BG is enabled [r/w]
def B_LCDC_PRIO equ 0 ; (CGB only) whether OBJ priority bits are enabled [r/w]
def LCDC_ENABLE equ 1 << B_LCDC_ENABLE
def LCDC_OFF equ 0 << B_LCDC_ENABLE
def LCDC_ON equ 1 << B_LCDC_ENABLE
def LCDC_WIN_MAP equ 1 << B_LCDC_WIN_MAP
def LCDC_WIN_9800 equ 0 << B_LCDC_WIN_MAP
def LCDC_WIN_9C00 equ 1 << B_LCDC_WIN_MAP
def LCDC_WINDOW equ 1 << B_LCDC_WINDOW
def LCDC_WIN_OFF equ 0 << B_LCDC_WINDOW
def LCDC_WIN_ON equ 1 << B_LCDC_WINDOW
def LCDC_BLOCKS equ 1 << B_LCDC_BLOCKS
def LCDC_BLOCK21 equ 0 << B_LCDC_BLOCKS
def LCDC_BLOCK01 equ 1 << B_LCDC_BLOCKS
def LCDC_BG_MAP equ 1 << B_LCDC_BG_MAP
def LCDC_BG_9800 equ 0 << B_LCDC_BG_MAP
def LCDC_BG_9C00 equ 1 << B_LCDC_BG_MAP
def LCDC_OBJ_SIZE equ 1 << B_LCDC_OBJ_SIZE
def LCDC_OBJ_8 equ 0 << B_LCDC_OBJ_SIZE
def LCDC_OBJ_16 equ 1 << B_LCDC_OBJ_SIZE
def LCDC_OBJS equ 1 << B_LCDC_OBJS
def LCDC_OBJ_OFF equ 0 << B_LCDC_OBJS
def LCDC_OBJ_ON equ 1 << B_LCDC_OBJS
def LCDC_BG equ 1 << B_LCDC_BG
def LCDC_BG_OFF equ 0 << B_LCDC_BG
def LCDC_BG_ON equ 1 << B_LCDC_BG
def LCDC_PRIO equ 1 << B_LCDC_PRIO
def LCDC_PRIO_OFF equ 0 << B_LCDC_PRIO
def LCDC_PRIO_ON equ 1 << B_LCDC_PRIO
; -- STAT ($FF41) -------------------------------------------------------------
; Graphics status and interrupt control
def rSTAT equ $FF41
def B_STAT_LYC equ 6 ; 1 = LY match triggers the STAT interrupt [r/w]
def B_STAT_MODE_2 equ 5 ; 1 = OAM Scan triggers the PPU interrupt [r/w]
def B_STAT_MODE_1 equ 4 ; 1 = VBlank triggers the PPU interrupt [r/w]
def B_STAT_MODE_0 equ 3 ; 1 = HBlank triggers the PPU interrupt [r/w]
def B_STAT_LYCF equ 2 ; 1 = LY is currently equal to LYC [ro]
def B_STAT_BUSY equ 1 ; 1 = the PPU is currently accessing VRAM [ro]
def STAT_LYC equ 1 << B_STAT_LYC
def STAT_MODE_2 equ 1 << B_STAT_MODE_2
def STAT_MODE_1 equ 1 << B_STAT_MODE_1
def STAT_MODE_0 equ 1 << B_STAT_MODE_0
def STAT_LYCF equ 1 << B_STAT_LYCF
def STAT_BUSY equ 1 << B_STAT_BUSY
def STAT_MODE equ %000000_11 ; PPU's current status [ro]
def STAT_HBLANK equ %000000_00 ; waiting after a line's rendering (HBlank)
def STAT_VBLANK equ %000000_01 ; waiting between frames (VBlank)
def STAT_OAM equ %000000_10 ; checking which OBJs will be rendered on this line (OAM scan)
def STAT_LCD equ %000000_11 ; pushing pixels to the LCD
; -- SCY ($FF42) --------------------------------------------------------------
; Background Y scroll offset (in pixels) [r/w]
def rSCY equ $FF42
; -- SCX ($FF43) --------------------------------------------------------------
; Background X scroll offset (in pixels) [r/w]
def rSCX equ $FF43
; -- LY ($FF44) ---------------------------------------------------------------
; Y coordinate of the line currently processed by the PPU (0-153) [ro]
def rLY equ $FF44
def LY_VBLANK equ 144 ; 144-153 is the VBlank period
; -- LYC ($FF45) --------------------------------------------------------------
; Value that LY is constantly compared to [r/w]
def rLYC equ $FF45
; -- DMA ($FF46) --------------------------------------------------------------
; OAM DMA start address (high 8 bits) and start [wo]
def rDMA equ $FF46
; -- BGP ($FF47) --------------------------------------------------------------
; (DMG only) Background color mapping [r/w]
def rBGP equ $FF47
def BGP_SGB_TRANSFER equ %11_10_01_00 ; set BGP to this value before SGB VRAM transfer
; -- OBP0 ($FF48) -------------------------------------------------------------
; (DMG only) OBJ color mapping #0 [r/w]
def rOBP0 equ $FF48
; -- OBP1 ($FF49) -------------------------------------------------------------
; (DMG only) OBJ color mapping #1 [r/w]
def rOBP1 equ $FF49
; -- WY ($FF4A) ---------------------------------------------------------------
; Y coordinate of the Window's top-left pixel (0-143) [r/w]
def rWY equ $FF4A
; -- WX ($FF4B) ---------------------------------------------------------------
; X coordinate of the Window's top-left pixel, plus 7 (7-166) [r/w]
def rWX equ $FF4B
def WX_OFS equ 7 ; subtract this to get the actual Window Y coordinate
; -- SYS / KEY0 ($FF4C) -------------------------------------------------------
; (CGB boot ROM only) CPU mode select
def rSYS equ $FF4C
; This is known as the "CPU mode register" in Fig. 11 of this patent:
; https://patents.google.com/patent/US6322447B1/en?oq=US6322447bi
; "OBJ priority mode designating register" in the same patent
; Credit to @mattcurrie for this finding!
def SYS_MODE equ %0000_11_00 ; current system mode [r/w]
def SYS_CGB equ %0000_00_00 ; CGB mode
def SYS_DMG equ %0000_01_00 ; DMG compatibility mode
def SYS_PGB1 equ %0000_10_00 ; LCD is driven externally, CPU is stopped
def SYS_PGB2 equ %0000_11_00 ; LCD is driven externally, CPU is running
; -- SPD / KEY1 ($FF4D) -------------------------------------------------------
; (CGB only) Double-speed mode control
def rSPD equ $FF4D
def B_SPD_DOUBLE equ 7 ; current clock speed [ro]
def B_SPD_PREPARE equ 0 ; 1 = next `stop` instruction will switch clock speeds [r/w]
def SPD_SINGLE equ 0 << B_SPD_DOUBLE
def SPD_DOUBLE equ 1 << B_SPD_DOUBLE
def SPD_PREPARE equ 1 << B_SPD_PREPARE
; -- $FF4E is unused ----------------------------------------------------------
; -- VBK ($FF4F) --------------------------------------------------------------
; (CGB only) VRAM bank number (0 or 1)
def rVBK equ $FF4F
def VBK_BANK equ %0000000_1 ; mapped VRAM bank [r/w]
; -- BANK ($FF50) -------------------------------------------------------------
; (boot ROM only) Boot ROM mapping control
def rBANK equ $FF50
def B_BANK_ON equ 0 ; whether the boot ROM is mapped [wo]
def BANK_ON equ 0 << B_BANK_ON
def BANK_OFF equ 1 << B_BANK_ON
; -- VDMA_SRC_HIGH / HDMA1 ($FF51) --------------------------------------------
; (CGB only) VRAM DMA source address (high 8 bits) [wo]
def rVDMA_SRC_HIGH equ $FF51
; -- VDMA_SRC_LOW / HDMA2 ($FF52) ---------------------------------------------
; (CGB only) VRAM DMA source address (low 8 bits) [wo]
def rVDMA_SRC_LOW equ $FF52
; -- VDMA_DEST_HIGH / HDMA3 ($FF53) -------------------------------------------
; (CGB only) VRAM DMA destination address (high 8 bits) [wo]
def rVDMA_DEST_HIGH equ $FF53
; -- VDMA_DEST_LOW / HDMA3 ($FF54) --------------------------------------------
; (CGB only) VRAM DMA destination address (low 8 bits) [wo]
def rVDMA_DEST_LOW equ $FF54
; -- VDMA_LEN / HDMA5 ($FF55) -------------------------------------------------
; (CGB only) VRAM DMA length, mode, and start
def rVDMA_LEN equ $FF55
def B_VDMA_LEN_MODE equ 7 ; on write: VRAM DMA mode [wo]
def VDMA_LEN_MODE equ 1 << B_VDMA_LEN_MODE
def VDMA_LEN_MODE_GENERAL equ 0 << B_VDMA_LEN_MODE ; GDMA (general-purpose)
def VDMA_LEN_MODE_HBLANK equ 1 << B_VDMA_LEN_MODE ; HDMA (HBlank)
def B_VDMA_LEN_BUSY equ 7 ; on read: is a VRAM DMA active?
def VDMA_LEN_BUSY equ 1 << B_VDMA_LEN_BUSY
def VDMA_LEN_NO equ 0 << B_VDMA_LEN_BUSY
def VDMA_LEN_YES equ 1 << B_VDMA_LEN_BUSY
def VDMA_LEN_SIZE equ %0_1111111 ; how many 16-byte blocks (minus 1) to transfer [r/w]
; -- RP ($FF56) ---------------------------------------------------------------
; (CGB only) Infrared communications port
def rRP equ $FF56
def RP_READ equ %11_000000 ; whether the IR read is enabled [r/w]
def RP_DISABLE equ %00_000000
def RP_ENABLE equ %11_000000
def B_RP_DATA_IN equ 1 ; 0 = IR light is being received [ro]
def B_RP_LED_ON equ 0 ; 1 = IR light is being sent [r/w]
def RP_DATA_IN equ 1 << B_RP_DATA_IN
def RP_LED_ON equ 1 << B_RP_LED_ON
def RP_WRITE_LOW equ 0 << B_RP_LED_ON
def RP_WRITE_HIGH equ 1 << B_RP_LED_ON
; -- $FF57-$FF67 are unused ---------------------------------------------------
; -- BGPI / BCPS ($FF68) ------------------------------------------------------
; (CGB only) Background palette I/O index
def rBGPI equ $FF68
def B_BGPI_AUTOINC equ 7 ; whether the index field is incremented after each write to BCPD [r/w]
def BGPI_AUTOINC equ 1 << B_BGPI_AUTOINC
def BGPI_INDEX equ %00_111111 ; the index within Palette RAM accessed via BCPD [r/w]
; -- BGPD / BCPD ($FF69) ------------------------------------------------------
; (CGB only) Background palette I/O access [r/w]
def rBGPD equ $FF69
; -- OBPI / OCPS ($FF6A) ------------------------------------------------------
; (CGB only) OBJ palette I/O index
def rOBPI equ $FF6A
def B_OBPI_AUTOINC equ 7 ; whether the index field is incremented after each write to OBPD [r/w]
def OBPI_AUTOINC equ 1 << B_OBPI_AUTOINC
def OBPI_INDEX equ %00_111111 ; the index within Palette RAM accessed via OBPD [r/w]
; -- OBPD / OCPD ($FF6B) ------------------------------------------------------
; (CGB only) OBJ palette I/O access [r/w]
def rOBPD equ $FF6B
; -- OPRI ($FF6C) -------------------------------------------------------------
; (CGB boot ROM only) OBJ draw priority mode
def rOPRI equ $FF6C
def B_OPRI_PRIORITY equ 0 ; which drawing priority is used for OBJs [r/w]
def OPRI_PRIORITY equ 1 << B_OPRI_PRIORITY
def OPRI_OAM equ 0 << B_OPRI_PRIORITY ; CGB mode default: earliest OBJ in OAM wins
def OPRI_COORD equ 1 << B_OPRI_PRIORITY ; DMG mode default: leftmost OBJ wins
; -- $FF6D-$FF6F are unused ---------------------------------------------------
; -- WBK / SVBK ($FF70) -------------------------------------------------------
; (CGB only) WRAM bank number
def rWBK equ $FF70
def WBK_BANK equ %00000_111 ; mapped WRAM bank (0-7) [r/w]
; -- $FF71-$FF75 are unused ---------------------------------------------------
; -- PCM12 ($FF76) ------------------------------------------------------------
; Audio channels 1 and 2 output
def rPCM12 equ $FF76
def PCM12_CH2 equ %1111_0000 ; audio channel 2 output [ro]
def PCM12_CH1 equ %0000_1111 ; audio channel 1 output [ro]
; -- PCM34 ($FF77) ------------------------------------------------------------
; Audio channels 3 and 4 output
def rPCM34 equ $FF77
def PCM34_CH4 equ %1111_0000 ; audio channel 4 output [ro]
def PCM34_CH3 equ %0000_1111 ; audio channel 3 output [ro]
; -- $FF78-$FF7F are unused ---------------------------------------------------
; -- IE ($FFFF) ---------------------------------------------------------------
; Interrupt enable
def rIE equ $FFFF
def B_IE_JOYPAD equ 4 ; 1 = joypad interrupt is enabled [r/w]
def B_IE_SERIAL equ 3 ; 1 = serial interrupt is enabled [r/w]
def B_IE_TIMER equ 2 ; 1 = timer interrupt is enabled [r/w]
def B_IE_STAT equ 1 ; 1 = STAT interrupt is enabled [r/w]
def B_IE_VBLANK equ 0 ; 1 = VBlank interrupt is enabled [r/w]
def IE_JOYPAD equ 1 << B_IE_JOYPAD
def IE_SERIAL equ 1 << B_IE_SERIAL
def IE_TIMER equ 1 << B_IE_TIMER
def IE_STAT equ 1 << B_IE_STAT
def IE_VBLANK equ 1 << B_IE_VBLANK
;******************************************************************************
; Cartridge registers (MBC)
;******************************************************************************
; Note that these "registers" are each actually accessible at an entire address range;
; however, one address for each of these ranges is considered the "canonical" one, and
; these addresses are what's provided here.
; -- RAMG ($0000-$1FFF) -------------------------------------------------------
; Whether SRAM can be accessed [wo]
def rRAMG equ $0000
; Common values
def RAMG_SRAM_DISABLE equ $00
def RAMG_SRAM_ENABLE equ $0A ; some MBCs accept any value whose low nybble is $A
; -- ROMB0 ($2000-$3FFF) ------------------------------------------------------
; ROM bank number (low 8 bits when applicable) [wo]
def rROMB0 equ $2000
; -- ROMB1 ($3000-$3FFF) ------------------------------------------------------
; (MBC5 only) ROM bank number high bit (bit 8) [wo]
def rROMB1 equ $3000
; -- RAMB ($4000-$5FFF) -------------------------------------------------------
; SRAM bank number [wo]
def rRAMB equ $4000
; (MBC3-only) Special RAM bank numbers that actually map values into RTCREG
def RAMB_RTC_S equ $08 ; seconds counter (0-59)
def RAMB_RTC_M equ $09 ; minutes counter (0-59)
def RAMB_RTC_H equ $0A ; hours counter (0-23)
def RAMB_RTC_DL equ $0B ; days counter, low byte (0-255)
def RAMB_RTC_DH equ $0C ; days counter, high bit and other flags
def B_RAMB_RTC_DH_CARRY equ 7 ; 1 = days counter overflowed [wo]
def B_RAMB_RTC_DH_HALT equ 6 ; 0 = run timer, 1 = stop timer [wo]
def B_RAMB_RTC_DH_HIGH equ 0 ; days counter, high bit (bit 8) [wo]
def RAMB_RTC_DH_CARRY equ 1 << B_RAMB_RTC_DH_CARRY
def RAMB_RTC_DH_HALT equ 1 << B_RAMB_RTC_DH_HALT
def RAMB_RTC_DH_HIGH equ 1 << B_RAMB_RTC_DH_HIGH
def B_RAMB_RUMBLE equ 3 ; (MBC5 and MBC7 only) enable the rumble motor (if any)
def RAMB_RUMBLE equ 1 << B_RAMB_RUMBLE
def RAMB_RUMBLE_OFF equ 0 << B_RAMB_RUMBLE
def RAMB_RUMBLE_ON equ 1 << B_RAMB_RUMBLE
; -- RTCLATCH ($6000-$7FFF) ---------------------------------------------------
; (MBC3 only) RTC latch clock data [wo]
def rRTCLATCH equ $6000
; Write $00 then $01 to latch the current time into RTCREG
def RTCLATCH_START equ $00
def RTCLATCH_FINISH equ $01
; -- RTCREG ($A000-$BFFF) -----------------------------------------------------
; (MBC3 only) RTC register [r/w]
def rRTCREG equ $A000
;******************************************************************************
; Screen-related constants
;******************************************************************************
def SCREEN_WIDTH_PX equ 160 ; width of screen in pixels
def SCREEN_HEIGHT_PX equ 144 ; height of screen in pixels
def SCREEN_WIDTH equ 20 ; width of screen in bytes
def SCREEN_HEIGHT equ 18 ; height of screen in bytes
def SCREEN_AREA equ SCREEN_WIDTH * SCREEN_HEIGHT ; size of screen in bytes
def TILEMAP_WIDTH_PX equ 256 ; width of tilemap in pixels
def TILEMAP_HEIGHT_PX equ 256 ; height of tilemap in pixels
def TILEMAP_WIDTH equ 32 ; width of tilemap in bytes
def TILEMAP_HEIGHT equ 32 ; height of tilemap in bytes
def TILEMAP_AREA equ TILEMAP_WIDTH * TILEMAP_HEIGHT ; size of tilemap in bytes
def TILE_WIDTH equ 8 ; width of tile in pixels
def TILE_HEIGHT equ 8 ; height of tile in pixels
def TILE_SIZE equ 16 ; size of tile in bytes (2 bits/pixel)
def COLOR_SIZE equ 2 ; size of color in bytes (little-endian BGR555)
def COLOR_GREEN_LOW equ %111_00000 ; for the low byte
def COLOR_RED equ %000_11111 ; for the low byte
def COLOR_BLUE equ %0_11111_00 ; for the high byte
def COLOR_GREEN_HIGH equ %000000_11 ; for the high byte
def PAL_COLORS equ 4 ; colors per palette
def PAL_SIZE equ COLOR_SIZE * PAL_COLORS ; size of palette in bytes
; Tilemaps the BG or Window can read from (controlled by LCDC)
def TILEMAP0 equ $9800 ; $9800-$9BFF
def TILEMAP1 equ $9C00 ; $9C00-$9FFF
; (CGB only) BG tile attribute fields
def B_BG_PRIO equ 7 ; whether the BG tile colors 1-3 are drawn below OBJs
def B_BG_YFLIP equ 6 ; whether the whole BG tile is flipped vertically
def B_BG_XFLIP equ 5 ; whether the whole BG tile is flipped horizontally
def B_BG_BANK1 equ 3 ; which VRAM bank the BG tile is taken from
def BG_PALETTE equ %00000_111 ; which palette the BG tile uses
def BG_PRIO equ 1 << B_BG_PRIO
def BG_YFLIP equ 1 << B_BG_YFLIP
def BG_XFLIP equ 1 << B_BG_XFLIP
def BG_BANK0 equ 0 << B_BG_BANK1
def BG_BANK1 equ 1 << B_BG_BANK1
;******************************************************************************
; OBJ-related constants
;******************************************************************************
; OAM attribute field offsets
rsreset
def OAMA_Y rb ; 0
def OAM_Y_OFS equ 16 ; subtract 16 from what's written to OAM to get the real Y position
def OAMA_X rb ; 1
def OAM_X_OFS equ 8 ; subtract 8 from what's written to OAM to get the real X position
def OAMA_TILEID rb ; 2
def OAMA_FLAGS rb ; 3
def B_OAM_PRIO equ 7 ; whether the OBJ is drawn above BG colors 1-3
def B_OAM_YFLIP equ 6 ; whether the whole OBJ is flipped vertically
def B_OAM_XFLIP equ 5 ; whether the whole OBJ is flipped horizontally
def B_OAM_PAL1 equ 4 ; (DMG only) which of the two palettes the OBJ uses
def B_OAM_BANK1 equ 3 ; (CGB only) which VRAM bank the OBJ takes its tile(s) from
def OAM_PALETTE equ %00000_111 ; (CGB only) which palette the OBJ uses
def OAM_PRIO equ 1 << B_OAM_PRIO
def OAM_YFLIP equ 1 << B_OAM_YFLIP
def OAM_XFLIP equ 1 << B_OAM_XFLIP
def OAM_PAL0 equ 0 << B_OAM_PAL1
def OAM_PAL1 equ 1 << B_OAM_PAL1
def OAM_BANK0 equ 0 << B_OAM_BANK1
def OAM_BANK1 equ 1 << B_OAM_BANK1
def OBJ_SIZE rb 0 ; size of OBJ in bytes = 4
def OAM_COUNT equ 40 ; how many OBJs there are room for in OAM
def OAM_SIZE equ OBJ_SIZE * OAM_COUNT
;******************************************************************************
; Interrupt vector addresses
;******************************************************************************
def INT_HANDLER_VBLANK equ $0040 ; VBlank interrupt handler address
def INT_HANDLER_STAT equ $0048 ; STAT interrupt handler address
def INT_HANDLER_TIMER equ $0050 ; timer interrupt handler address
def INT_HANDLER_SERIAL equ $0058 ; serial interrupt handler address
def INT_HANDLER_JOYPAD equ $0060 ; joypad interrupt handler address
;******************************************************************************
; Boot-up register values
;******************************************************************************
; Register A = CPU type
def BOOTUP_A_DMG equ $01
def BOOTUP_A_CGB equ $11 ; CGB or AGB
def BOOTUP_A_MGB equ $FF
def BOOTUP_A_SGB equ BOOTUP_A_DMG
def BOOTUP_A_SGB2 equ BOOTUP_A_MGB
; Register B = CPU qualifier (if A is BOOTUP_A_CGB)
def B_BOOTUP_B_AGB equ 0
def BOOTUP_B_CGB equ 0 << B_BOOTUP_B_AGB
def BOOTUP_B_AGB equ 1 << B_BOOTUP_B_AGB
;******************************************************************************
; Aliases
;******************************************************************************
; Prefer the standard names to these aliases, which may be official but are
; less directly meaningful or human-readable.
def rP1 equ rJOYP
def rNR10 equ rAUD1SWEEP
def rNR11 equ rAUD1LEN
def rNR12 equ rAUD1ENV
def rNR13 equ rAUD1LOW
def rNR14 equ rAUD1HIGH
def rNR21 equ rAUD2LEN
def rNR22 equ rAUD2ENV
def rNR23 equ rAUD2LOW
def rNR24 equ rAUD2HIGH
def rNR30 equ rAUD3ENA
def rNR31 equ rAUD3LEN
def rNR32 equ rAUD3LEVEL
def rNR33 equ rAUD3LOW
def rNR34 equ rAUD3HIGH
def rNR41 equ rAUD4LEN
def rNR42 equ rAUD4ENV
def rNR43 equ rAUD4POLY
def rNR44 equ rAUD4GO
def rNR50 equ rAUDVOL
def rNR51 equ rAUDTERM
def rNR52 equ rAUDENA
def rKEY0 equ rSYS
def rKEY1 equ rSPD
def rHDMA1 equ rVDMA_SRC_HIGH
def rHDMA2 equ rVDMA_SRC_LOW
def rHDMA3 equ rVDMA_DEST_HIGH
def rHDMA4 equ rVDMA_DEST_LOW
def rHDMA5 equ rVDMA_LEN
def rBCPS equ rBGPI
def rBCPD equ rBGPD
def rOCPS equ rOBPI
def rOCPD equ rOBPD
def rSVBK equ rWBK
endc ; HARDWARE_INC

View File

@ -1,153 +0,0 @@
; Graciously derived from:
; https://gbdev.io/pandocs/
; https://github.com/gbdev/hardware.inc
; http://gameboy.mongenel.com/dmg/asmmemmap.html
; MBC3
DEF MBC3SRamEnable EQU $0000
DEF MBC3RomBank EQU $2000
DEF MBC3SRamBank EQU $4000
DEF MBC3LatchClock EQU $6000
DEF MBC3RTC EQU $a000
DEF SRAM_DISABLE EQU $00
DEF SRAM_ENABLE EQU $0a
DEF NUM_SRAM_BANKS EQU 4
DEF RTC_S EQU $08 ; Seconds 0-59 (0-3Bh)
DEF RTC_M EQU $09 ; Minutes 0-59 (0-3Bh)
DEF RTC_H EQU $0a ; Hours 0-23 (0-17h)
DEF RTC_DL EQU $0b ; Lower 8 bits of Day Counter (0-FFh)
DEF RTC_DH EQU $0c ; Upper 1 bit of Day Counter, Carry Bit, Halt Flag
DEF RTC_DH_HI EQU 0 ; Most significant bit of Day Counter (Bit 8)
DEF RTC_DH_HALT EQU 6 ; Halt (0=Active, 1=Stop Timer)
DEF RTC_DH_OVERFLOW EQU 7 ; Day Counter Carry Bit (1=Counter Overflow)
; interrupt flags
DEF VBLANK EQU 0
DEF LCD_STAT EQU 1
DEF TIMER EQU 2
DEF SERIAL EQU 3
DEF JOYPAD EQU 4
DEF IE_DEFAULT EQU (1 << JOYPAD) | (1 << SERIAL) | (1 << TIMER) | (1 << LCD_STAT) | (1 << VBLANK)
; OAM attribute flags
DEF OAM_TILE_BANK EQU 3
DEF OAM_OBP_NUM EQU 4 ; non CGB Mode Only
DEF OAM_X_FLIP EQU 5
DEF OAM_Y_FLIP EQU 6
DEF OAM_PRIORITY EQU 7 ; 0: OBJ above BG, 1: OBJ behind BG (colors 1-3)
; BG Map attribute flags
DEF PALETTE_MASK EQU %111
DEF VRAM_BANK_1 EQU 1 << OAM_TILE_BANK ; $08
DEF OBP_NUM EQU 1 << OAM_OBP_NUM ; $10
DEF X_FLIP EQU 1 << OAM_X_FLIP ; $20
DEF Y_FLIP EQU 1 << OAM_Y_FLIP ; $40
DEF PRIORITY EQU 1 << OAM_PRIORITY ; $80
; Hardware registers
DEF rJOYP EQU $ff00 ; Joypad (R/W)
DEF rJOYP_BUTTONS EQU 4
DEF rJOYP_DPAD EQU 5
DEF rSB EQU $ff01 ; Serial transfer data (R/W)
DEF rSC EQU $ff02 ; Serial Transfer Control (R/W)
DEF rSC_ON EQU 7
DEF rSC_CGB EQU 1
DEF rSC_CLOCK EQU 0
DEF rDIV EQU $ff04 ; Divider Register (R/W)
DEF rTIMA EQU $ff05 ; Timer counter (R/W)
DEF rTMA EQU $ff06 ; Timer Modulo (R/W)
DEF rTAC EQU $ff07 ; Timer Control (R/W)
DEF rTAC_ON EQU 2
DEF rTAC_4096_HZ EQU %00
DEF rTAC_262144_HZ EQU %01
DEF rTAC_65536_HZ EQU %10
DEF rTAC_16384_HZ EQU %11
DEF rIF EQU $ff0f ; Interrupt Flag (R/W)
DEF rNR10 EQU $ff10 ; Channel 1 Sweep register (R/W)
DEF rNR11 EQU $ff11 ; Channel 1 Sound length/Wave pattern duty (R/W)
DEF rNR12 EQU $ff12 ; Channel 1 Volume Envelope (R/W)
DEF rNR13 EQU $ff13 ; Channel 1 Frequency lo (Write Only)
DEF rNR14 EQU $ff14 ; Channel 1 Frequency hi (R/W)
DEF rNR21 EQU $ff16 ; Channel 2 Sound Length/Wave Pattern Duty (R/W)
DEF rNR22 EQU $ff17 ; Channel 2 Volume Envelope (R/W)
DEF rNR23 EQU $ff18 ; Channel 2 Frequency lo data (W)
DEF rNR24 EQU $ff19 ; Channel 2 Frequency hi data (R/W)
DEF rNR30 EQU $ff1a ; Channel 3 Sound on/off (R/W)
DEF rNR31 EQU $ff1b ; Channel 3 Sound Length
DEF rNR32 EQU $ff1c ; Channel 3 Select output level (R/W)
DEF rNR33 EQU $ff1d ; Channel 3 Frequency's lower data (W)
DEF rNR34 EQU $ff1e ; Channel 3 Frequency's higher data (R/W)
DEF rNR41 EQU $ff20 ; Channel 4 Sound Length (R/W)
DEF rNR42 EQU $ff21 ; Channel 4 Volume Envelope (R/W)
DEF rNR43 EQU $ff22 ; Channel 4 Polynomial Counter (R/W)
DEF rNR44 EQU $ff23 ; Channel 4 Counter/consecutive; Inital (R/W)
DEF rNR50 EQU $ff24 ; Channel control / ON-OFF / Volume (R/W)
DEF rNR51 EQU $ff25 ; Selection of Sound output terminal (R/W)
DEF rNR52 EQU $ff26 ; Sound on/off
DEF rWave_0 EQU $ff30
DEF rWave_1 EQU $ff31
DEF rWave_2 EQU $ff32
DEF rWave_3 EQU $ff33
DEF rWave_4 EQU $ff34
DEF rWave_5 EQU $ff35
DEF rWave_6 EQU $ff36
DEF rWave_7 EQU $ff37
DEF rWave_8 EQU $ff38
DEF rWave_9 EQU $ff39
DEF rWave_a EQU $ff3a
DEF rWave_b EQU $ff3b
DEF rWave_c EQU $ff3c
DEF rWave_d EQU $ff3d
DEF rWave_e EQU $ff3e
DEF rWave_f EQU $ff3f
DEF rLCDC EQU $ff40 ; LCD Control (R/W)
DEF rLCDC_BG_PRIORITY EQU 0 ; 0=Off, 1=On
DEF rLCDC_SPRITES_ENABLE EQU 1 ; 0=Off, 1=On
DEF rLCDC_SPRITE_SIZE EQU 2 ; 0=8x8, 1=8x16
DEF rLCDC_BG_TILEMAP EQU 3 ; 0=9800-9BFF, 1=9C00-9FFF
DEF rLCDC_TILE_DATA EQU 4 ; 0=8800-97FF, 1=8000-8FFF
DEF rLCDC_WINDOW_ENABLE EQU 5 ; 0=Off, 1=On
DEF rLCDC_WINDOW_TILEMAP EQU 6 ; 0=9800-9BFF, 1=9C00-9FFF
DEF rLCDC_ENABLE EQU 7 ; 0=Off, 1=On
DEF LCDC_DEFAULT EQU (1 << rLCDC_ENABLE) | (1 << rLCDC_WINDOW_TILEMAP) | (1 << rLCDC_WINDOW_ENABLE) | (1 << rLCDC_SPRITES_ENABLE) | (1 << rLCDC_BG_PRIORITY)
DEF rSTAT EQU $ff41 ; LCDC Status (R/W)
DEF rSCY EQU $ff42 ; Scroll Y (R/W)
DEF rSCX EQU $ff43 ; Scroll X (R/W)
DEF rLY EQU $ff44 ; LCDC Y-Coordinate (R)
DEF LY_VBLANK EQU 144
DEF rLYC EQU $ff45 ; LY Compare (R/W)
DEF rDMA EQU $ff46 ; DMA Transfer and Start Address (W)
DEF rBGP EQU $ff47 ; BG Palette Data (R/W) - Non CGB Mode Only
DEF rOBP0 EQU $ff48 ; Object Palette 0 Data (R/W) - Non CGB Mode Only
DEF rOBP1 EQU $ff49 ; Object Palette 1 Data (R/W) - Non CGB Mode Only
DEF rWY EQU $ff4a ; Window Y Position (R/W)
DEF rWX EQU $ff4b ; Window X Position minus 7 (R/W)
DEF rLCDMODE EQU $ff4c
DEF rKEY1 EQU $ff4d ; CGB Mode Only - Prepare Speed Switch
DEF KEY1_PREPARE EQU 0 ; 0=No, 1=Prepare (R/W)
DEF KEY1_DBLSPEED EQU 7 ; 0=Normal Speed, 1=Double Speed (R)
DEF rVBK EQU $ff4f ; CGB Mode Only - VRAM Bank
DEF rBLCK EQU $ff50
DEF rHDMA1 EQU $ff51 ; CGB Mode Only - New DMA Source, High
DEF rHDMA2 EQU $ff52 ; CGB Mode Only - New DMA Source, Low
DEF rHDMA3 EQU $ff53 ; CGB Mode Only - New DMA Destination, High
DEF rHDMA4 EQU $ff54 ; CGB Mode Only - New DMA Destination, Low
DEF rHDMA5 EQU $ff55 ; CGB Mode Only - New DMA Length/Mode/Start
DEF rRP EQU $ff56 ; CGB Mode Only - Infrared Communications Port
DEF rRP_LED_ON EQU 0
DEF rRP_RECEIVING EQU 1
DEF rRP_ENABLE_READ_MASK EQU %11000000
DEF rBGPI EQU $ff68 ; CGB Mode Only - Background Palette Index
DEF rBGPI_AUTO_INCREMENT EQU 7 ; increment rBGPI after write to rBGPD
DEF rBGPD EQU $ff69 ; CGB Mode Only - Background Palette Data
DEF rOBPI EQU $ff6a ; CGB Mode Only - Sprite Palette Index
DEF rOBPI_AUTO_INCREMENT EQU 7 ; increment rOBPI after write to rOBPD
DEF rOBPD EQU $ff6b ; CGB Mode Only - Sprite Palette Data
DEF rOPRI EQU $ff6c ; CGB Mode Only - Object Priority Mode
DEF rSVBK EQU $ff70 ; CGB Mode Only - WRAM Bank
DEF rPCM12 EQU $ff76 ; Channel 1 & 2 Amplitude (R)
DEF rPCM34 EQU $ff77 ; Channel 3 & 4 Amplitude (R)
DEF rIE EQU $ffff ; Interrupt Enable (R/W)

View File

@ -350,3 +350,9 @@ DEF DAYCARE_INTRO_SEEN_F EQU 7
const VBLANK_UNUSED_6 ; 6
const VBLANK_UNUSED_7 ; 7
DEF NUM_VBLANK_HANDLERS EQU const_value
; rLCDC::
DEF LCDC_DEFAULT EQU LCDC_ON | LCDC_WIN_9C00 | LCDC_WIN_ON | LCDC_BLOCK21 | LCDC_BG_9800 | LCDC_OBJ_8 | LCDC_OBJ_ON | LCDC_BG_OFF | LCDC_PRIO_ON
; rIE::
DEF IE_DEFAULT EQU IE_JOYPAD | IE_SERIAL | IE_TIMER | IE_STAT | IE_VBLANK

View File

@ -241,29 +241,29 @@ BattleAnimFrameData:
oamdelete
.Frameset_CutDownRight:
oamframe BATTLE_ANIM_OAMSET_4B, 2, OAM_X_FLIP
oamframe BATTLE_ANIM_OAMSET_4C, 2, OAM_X_FLIP
oamframe BATTLE_ANIM_OAMSET_4D, 4, OAM_X_FLIP
oamframe BATTLE_ANIM_OAMSET_4E, 2, OAM_X_FLIP
oamframe BATTLE_ANIM_OAMSET_4B, 2, B_OAM_XFLIP
oamframe BATTLE_ANIM_OAMSET_4C, 2, B_OAM_XFLIP
oamframe BATTLE_ANIM_OAMSET_4D, 4, B_OAM_XFLIP
oamframe BATTLE_ANIM_OAMSET_4E, 2, B_OAM_XFLIP
oamwait 2
oamframe BATTLE_ANIM_OAMSET_4E, 2, OAM_X_FLIP
oamframe BATTLE_ANIM_OAMSET_4E, 2, B_OAM_XFLIP
oamwait 2
oamframe BATTLE_ANIM_OAMSET_4E, 2, OAM_X_FLIP
oamframe BATTLE_ANIM_OAMSET_4E, 2, B_OAM_XFLIP
oamwait 2
oamframe BATTLE_ANIM_OAMSET_4E, 2, OAM_X_FLIP
oamframe BATTLE_ANIM_OAMSET_4E, 2, B_OAM_XFLIP
oamdelete
.Frameset_CutUpRight:
oamframe BATTLE_ANIM_OAMSET_4B, 2, OAM_X_FLIP, OAM_Y_FLIP
oamframe BATTLE_ANIM_OAMSET_4C, 2, OAM_X_FLIP, OAM_Y_FLIP
oamframe BATTLE_ANIM_OAMSET_4D, 4, OAM_X_FLIP, OAM_Y_FLIP
oamframe BATTLE_ANIM_OAMSET_4E, 2, OAM_X_FLIP, OAM_Y_FLIP
oamframe BATTLE_ANIM_OAMSET_4B, 2, B_OAM_XFLIP, B_OAM_YFLIP
oamframe BATTLE_ANIM_OAMSET_4C, 2, B_OAM_XFLIP, B_OAM_YFLIP
oamframe BATTLE_ANIM_OAMSET_4D, 4, B_OAM_XFLIP, B_OAM_YFLIP
oamframe BATTLE_ANIM_OAMSET_4E, 2, B_OAM_XFLIP, B_OAM_YFLIP
oamwait 2
oamframe BATTLE_ANIM_OAMSET_4E, 2, OAM_X_FLIP, OAM_Y_FLIP
oamframe BATTLE_ANIM_OAMSET_4E, 2, B_OAM_XFLIP, B_OAM_YFLIP
oamwait 2
oamframe BATTLE_ANIM_OAMSET_4E, 2, OAM_X_FLIP, OAM_Y_FLIP
oamframe BATTLE_ANIM_OAMSET_4E, 2, B_OAM_XFLIP, B_OAM_YFLIP
oamwait 2
oamframe BATTLE_ANIM_OAMSET_4E, 2, OAM_X_FLIP, OAM_Y_FLIP
oamframe BATTLE_ANIM_OAMSET_4E, 2, B_OAM_XFLIP, B_OAM_YFLIP
oamdelete
.Frameset_CutLongDownLeft:
@ -283,19 +283,19 @@ BattleAnimFrameData:
oamdelete
.Frameset_CutLongDownRight:
oamframe BATTLE_ANIM_OAMSET_4B, 1, OAM_X_FLIP
oamframe BATTLE_ANIM_OAMSET_4C, 1, OAM_X_FLIP
oamframe BATTLE_ANIM_OAMSET_4D, 1, OAM_X_FLIP
oamframe BATTLE_ANIM_OAMSET_4F, 1, OAM_X_FLIP
oamframe BATTLE_ANIM_OAMSET_50, 1, OAM_X_FLIP
oamframe BATTLE_ANIM_OAMSET_51, 1, OAM_X_FLIP
oamframe BATTLE_ANIM_OAMSET_52, 2, OAM_X_FLIP
oamframe BATTLE_ANIM_OAMSET_4B, 1, B_OAM_XFLIP
oamframe BATTLE_ANIM_OAMSET_4C, 1, B_OAM_XFLIP
oamframe BATTLE_ANIM_OAMSET_4D, 1, B_OAM_XFLIP
oamframe BATTLE_ANIM_OAMSET_4F, 1, B_OAM_XFLIP
oamframe BATTLE_ANIM_OAMSET_50, 1, B_OAM_XFLIP
oamframe BATTLE_ANIM_OAMSET_51, 1, B_OAM_XFLIP
oamframe BATTLE_ANIM_OAMSET_52, 2, B_OAM_XFLIP
oamwait 2
oamframe BATTLE_ANIM_OAMSET_52, 2, OAM_X_FLIP
oamframe BATTLE_ANIM_OAMSET_52, 2, B_OAM_XFLIP
oamwait 2
oamframe BATTLE_ANIM_OAMSET_52, 2, OAM_X_FLIP
oamframe BATTLE_ANIM_OAMSET_52, 2, B_OAM_XFLIP
oamwait 2
oamframe BATTLE_ANIM_OAMSET_52, 2, OAM_X_FLIP
oamframe BATTLE_ANIM_OAMSET_52, 2, B_OAM_XFLIP
oamdelete
.Frameset_BallPoof:
@ -309,7 +309,7 @@ BattleAnimFrameData:
oamframe BATTLE_ANIM_OAMSET_0A, 7
oamframe BATTLE_ANIM_OAMSET_0B, 7
oamframe BATTLE_ANIM_OAMSET_0A, 7
oamframe BATTLE_ANIM_OAMSET_0B, 7, OAM_X_FLIP
oamframe BATTLE_ANIM_OAMSET_0B, 7, B_OAM_XFLIP
oamrestart
.Frameset_PokeBall2:
@ -328,7 +328,7 @@ BattleAnimFrameData:
oamframe BATTLE_ANIM_OAMSET_0A, 7
oamframe BATTLE_ANIM_OAMSET_0B, 7
oamframe BATTLE_ANIM_OAMSET_0A, 7
oamframe BATTLE_ANIM_OAMSET_0B, 7, OAM_X_FLIP
oamframe BATTLE_ANIM_OAMSET_0B, 7, B_OAM_XFLIP
oamframe BATTLE_ANIM_OAMSET_0A, 7
oamend
@ -400,9 +400,9 @@ BattleAnimFrameData:
oamframe BATTLE_ANIM_OAMSET_16, 8
oamframe BATTLE_ANIM_OAMSET_17, 4
oamframe BATTLE_ANIM_OAMSET_17, 4
oamframe BATTLE_ANIM_OAMSET_16, 8, OAM_X_FLIP
oamframe BATTLE_ANIM_OAMSET_15, 8, OAM_X_FLIP
oamframe BATTLE_ANIM_OAMSET_16, 8, OAM_X_FLIP
oamframe BATTLE_ANIM_OAMSET_16, 8, B_OAM_XFLIP
oamframe BATTLE_ANIM_OAMSET_15, 8, B_OAM_XFLIP
oamframe BATTLE_ANIM_OAMSET_16, 8, B_OAM_XFLIP
oamframe BATTLE_ANIM_OAMSET_17, 4
oamrestart
@ -567,10 +567,10 @@ BattleAnimFrameData:
oamdelete
.Frameset_ThunderRight:
oamframe BATTLE_ANIM_OAMSET_3A, 2, OAM_X_FLIP
oamframe BATTLE_ANIM_OAMSET_3B, 2, OAM_X_FLIP
oamframe BATTLE_ANIM_OAMSET_3C, 2, OAM_X_FLIP
oamframe BATTLE_ANIM_OAMSET_3D, 32, OAM_X_FLIP
oamframe BATTLE_ANIM_OAMSET_3A, 2, B_OAM_XFLIP
oamframe BATTLE_ANIM_OAMSET_3B, 2, B_OAM_XFLIP
oamframe BATTLE_ANIM_OAMSET_3C, 2, B_OAM_XFLIP
oamframe BATTLE_ANIM_OAMSET_3D, 32, B_OAM_XFLIP
oamdelete
.Frameset_ThunderWaveDisable:
@ -617,7 +617,7 @@ BattleAnimFrameData:
oamend
.Frameset_ClampFlipped:
oamframe BATTLE_ANIM_OAMSET_48, 8, OAM_X_FLIP
oamframe BATTLE_ANIM_OAMSET_48, 8, B_OAM_XFLIP
oamend
.Frameset_Bite1:
@ -663,9 +663,9 @@ BattleAnimFrameData:
oamwait 0
oamframe BATTLE_ANIM_OAMSET_14, 0
oamframe BATTLE_ANIM_OAMSET_15, 0
oamframe BATTLE_ANIM_OAMSET_14, 0, OAM_X_FLIP
oamframe BATTLE_ANIM_OAMSET_14, 0, B_OAM_XFLIP
oamwait 0
oamframe BATTLE_ANIM_OAMSET_16, 0, OAM_X_FLIP
oamframe BATTLE_ANIM_OAMSET_16, 0, B_OAM_XFLIP
oamframe BATTLE_ANIM_OAMSET_15, 0
oamframe BATTLE_ANIM_OAMSET_16, 0
oamrestart
@ -676,31 +676,31 @@ BattleAnimFrameData:
oamdelete
.Frameset_VineWhip2:
oamframe BATTLE_ANIM_OAMSET_56, 2, OAM_X_FLIP, OAM_Y_FLIP
oamframe BATTLE_ANIM_OAMSET_57, 4, OAM_X_FLIP, OAM_Y_FLIP
oamframe BATTLE_ANIM_OAMSET_56, 2, B_OAM_XFLIP, B_OAM_YFLIP
oamframe BATTLE_ANIM_OAMSET_57, 4, B_OAM_XFLIP, B_OAM_YFLIP
oamdelete
.Frameset_RazorWind1:
oamframe BATTLE_ANIM_OAMSET_56, 1
oamframe BATTLE_ANIM_OAMSET_57, 1
oamframe BATTLE_ANIM_OAMSET_58, 1
oamframe BATTLE_ANIM_OAMSET_57, 1, OAM_X_FLIP, OAM_Y_FLIP
oamframe BATTLE_ANIM_OAMSET_58, 1, OAM_X_FLIP, OAM_Y_FLIP
oamframe BATTLE_ANIM_OAMSET_57, 1, B_OAM_XFLIP, B_OAM_YFLIP
oamframe BATTLE_ANIM_OAMSET_58, 1, B_OAM_XFLIP, B_OAM_YFLIP
oamframe BATTLE_ANIM_OAMSET_57, 2
oamdelete
.Frameset_RazorWind2:
oamframe BATTLE_ANIM_OAMSET_56, 1, OAM_X_FLIP, OAM_Y_FLIP
oamframe BATTLE_ANIM_OAMSET_57, 1, OAM_X_FLIP, OAM_Y_FLIP
oamframe BATTLE_ANIM_OAMSET_58, 1, OAM_X_FLIP, OAM_Y_FLIP
oamframe BATTLE_ANIM_OAMSET_56, 1, B_OAM_XFLIP, B_OAM_YFLIP
oamframe BATTLE_ANIM_OAMSET_57, 1, B_OAM_XFLIP, B_OAM_YFLIP
oamframe BATTLE_ANIM_OAMSET_58, 1, B_OAM_XFLIP, B_OAM_YFLIP
oamframe BATTLE_ANIM_OAMSET_57, 1
oamframe BATTLE_ANIM_OAMSET_58, 1
oamframe BATTLE_ANIM_OAMSET_57, 2, OAM_X_FLIP, OAM_Y_FLIP
oamframe BATTLE_ANIM_OAMSET_57, 2, B_OAM_XFLIP, B_OAM_YFLIP
oamdelete
.Frameset_SonicboomJP:
oamframe BATTLE_ANIM_OAMSET_57, 1, OAM_X_FLIP, OAM_Y_FLIP
oamframe BATTLE_ANIM_OAMSET_58, 1, OAM_X_FLIP, OAM_Y_FLIP
oamframe BATTLE_ANIM_OAMSET_57, 1, B_OAM_XFLIP, B_OAM_YFLIP
oamframe BATTLE_ANIM_OAMSET_58, 1, B_OAM_XFLIP, B_OAM_YFLIP
oamframe BATTLE_ANIM_OAMSET_57, 1
oamframe BATTLE_ANIM_OAMSET_58, 1
oamrestart
@ -714,18 +714,18 @@ BattleAnimFrameData:
.Frameset_Egg:
oamframe BATTLE_ANIM_OAMSET_0A, 10
oamframe BATTLE_ANIM_OAMSET_0B, 3, OAM_X_FLIP
oamframe BATTLE_ANIM_OAMSET_5D, 3, OAM_X_FLIP
oamframe BATTLE_ANIM_OAMSET_0B, 3, OAM_X_FLIP, OAM_Y_FLIP
oamframe BATTLE_ANIM_OAMSET_0A, 2, OAM_Y_FLIP
oamframe BATTLE_ANIM_OAMSET_0B, 1, OAM_Y_FLIP
oamframe BATTLE_ANIM_OAMSET_0B, 3, B_OAM_XFLIP
oamframe BATTLE_ANIM_OAMSET_5D, 3, B_OAM_XFLIP
oamframe BATTLE_ANIM_OAMSET_0B, 3, B_OAM_XFLIP, B_OAM_YFLIP
oamframe BATTLE_ANIM_OAMSET_0A, 2, B_OAM_YFLIP
oamframe BATTLE_ANIM_OAMSET_0B, 1, B_OAM_YFLIP
oamframe BATTLE_ANIM_OAMSET_5D, 1
oamframe BATTLE_ANIM_OAMSET_0B, 1
oamrestart
.Frameset_EggWobble:
oamframe BATTLE_ANIM_OAMSET_0A, 3
oamframe BATTLE_ANIM_OAMSET_0B, 7, OAM_X_FLIP
oamframe BATTLE_ANIM_OAMSET_0B, 7, B_OAM_XFLIP
oamframe BATTLE_ANIM_OAMSET_0A, 7
oamframe BATTLE_ANIM_OAMSET_0B, 7
oamframe BATTLE_ANIM_OAMSET_0A, 3
@ -776,7 +776,7 @@ BattleAnimFrameData:
oamend
.Frameset_Sound3:
oamframe BATTLE_ANIM_OAMSET_6E, 8, OAM_Y_FLIP
oamframe BATTLE_ANIM_OAMSET_6E, 8, B_OAM_YFLIP
oamend
.Frameset_Wave:
@ -824,12 +824,12 @@ BattleAnimFrameData:
oamframe BATTLE_ANIM_OAMSET_7B, 1
oamframe BATTLE_ANIM_OAMSET_7C, 1
oamframe BATTLE_ANIM_OAMSET_7D, 1
oamframe BATTLE_ANIM_OAMSET_7C, 1, OAM_X_FLIP, OAM_Y_FLIP
oamframe BATTLE_ANIM_OAMSET_7B, 1, OAM_X_FLIP, OAM_Y_FLIP
oamframe BATTLE_ANIM_OAMSET_7A, 1, OAM_X_FLIP, OAM_Y_FLIP
oamframe BATTLE_ANIM_OAMSET_79, 1, OAM_X_FLIP, OAM_Y_FLIP
oamframe BATTLE_ANIM_OAMSET_78, 1, OAM_X_FLIP, OAM_Y_FLIP
oamframe BATTLE_ANIM_OAMSET_77, 1, OAM_X_FLIP, OAM_Y_FLIP
oamframe BATTLE_ANIM_OAMSET_7C, 1, B_OAM_XFLIP, B_OAM_YFLIP
oamframe BATTLE_ANIM_OAMSET_7B, 1, B_OAM_XFLIP, B_OAM_YFLIP
oamframe BATTLE_ANIM_OAMSET_7A, 1, B_OAM_XFLIP, B_OAM_YFLIP
oamframe BATTLE_ANIM_OAMSET_79, 1, B_OAM_XFLIP, B_OAM_YFLIP
oamframe BATTLE_ANIM_OAMSET_78, 1, B_OAM_XFLIP, B_OAM_YFLIP
oamframe BATTLE_ANIM_OAMSET_77, 1, B_OAM_XFLIP, B_OAM_YFLIP
oamdelete
.Frameset_Chick1:
@ -838,8 +838,8 @@ BattleAnimFrameData:
oamrestart
.Frameset_Chick2:
oamframe BATTLE_ANIM_OAMSET_1B, 4, OAM_X_FLIP
oamframe BATTLE_ANIM_OAMSET_7E, 4, OAM_X_FLIP
oamframe BATTLE_ANIM_OAMSET_1B, 4, B_OAM_XFLIP
oamframe BATTLE_ANIM_OAMSET_7E, 4, B_OAM_XFLIP
oamrestart
.Frameset_Amnesia1:
@ -908,7 +908,7 @@ BattleAnimFrameData:
oamend
.Frameset_ParalyzedFlipped:
oamframe BATTLE_ANIM_OAMSET_8E, 8, OAM_X_FLIP
oamframe BATTLE_ANIM_OAMSET_8E, 8, B_OAM_XFLIP
oamend
.Frameset_Haze:
@ -948,7 +948,7 @@ BattleAnimFrameData:
.Frameset_SpinningBone:
oamframe BATTLE_ANIM_OAMSET_97, 1
oamframe BATTLE_ANIM_OAMSET_97, 1, OAM_X_FLIP
oamframe BATTLE_ANIM_OAMSET_97, 1, B_OAM_XFLIP
oamrestart
.Frameset_Star:
@ -1009,8 +1009,8 @@ BattleAnimFrameData:
oamframe BATTLE_ANIM_OAMSET_A5, 4
oamframe BATTLE_ANIM_OAMSET_A6, 4
oamframe BATTLE_ANIM_OAMSET_A7, 4
oamframe BATTLE_ANIM_OAMSET_A6, 4, OAM_X_FLIP
oamframe BATTLE_ANIM_OAMSET_A5, 4, OAM_X_FLIP
oamframe BATTLE_ANIM_OAMSET_A6, 4, B_OAM_XFLIP
oamframe BATTLE_ANIM_OAMSET_A5, 4, B_OAM_XFLIP
oamrestart
.Frameset_DefenseCurl:
@ -1018,8 +1018,8 @@ BattleAnimFrameData:
oamframe BATTLE_ANIM_OAMSET_A9, 4
oamframe BATTLE_ANIM_OAMSET_AA, 4
oamframe BATTLE_ANIM_OAMSET_AB, 4
oamframe BATTLE_ANIM_OAMSET_AA, 4, OAM_X_FLIP
oamframe BATTLE_ANIM_OAMSET_A9, 4, OAM_X_FLIP
oamframe BATTLE_ANIM_OAMSET_AA, 4, B_OAM_XFLIP
oamframe BATTLE_ANIM_OAMSET_A9, 4, B_OAM_XFLIP
oamrestart
.Frameset_MetronomeHand:
@ -1048,7 +1048,7 @@ BattleAnimFrameData:
.Frameset_HealBell:
oamframe BATTLE_ANIM_OAMSET_B1, 7
oamframe BATTLE_ANIM_OAMSET_B1, 7, OAM_X_FLIP
oamframe BATTLE_ANIM_OAMSET_B1, 7, B_OAM_XFLIP
oamrestart
.Frameset_BatonPass:
@ -1060,15 +1060,15 @@ BattleAnimFrameData:
oamend
.Frameset_LockOn2:
oamframe BATTLE_ANIM_OAMSET_B3, 8, OAM_X_FLIP
oamframe BATTLE_ANIM_OAMSET_B3, 8, B_OAM_XFLIP
oamend
.Frameset_LockOn3:
oamframe BATTLE_ANIM_OAMSET_B3, 8, OAM_Y_FLIP
oamframe BATTLE_ANIM_OAMSET_B3, 8, B_OAM_YFLIP
oamend
.Frameset_LockOn4:
oamframe BATTLE_ANIM_OAMSET_B3, 8, OAM_X_FLIP, OAM_Y_FLIP
oamframe BATTLE_ANIM_OAMSET_B3, 8, B_OAM_XFLIP, B_OAM_YFLIP
oamend
.Frameset_MindReader1:
@ -1076,15 +1076,15 @@ BattleAnimFrameData:
oamend
.Frameset_MindReader2:
oamframe BATTLE_ANIM_OAMSET_B5, 8, OAM_X_FLIP
oamframe BATTLE_ANIM_OAMSET_B5, 8, B_OAM_XFLIP
oamend
.Frameset_MindReader3:
oamframe BATTLE_ANIM_OAMSET_B5, 8, OAM_Y_FLIP
oamframe BATTLE_ANIM_OAMSET_B5, 8, B_OAM_YFLIP
oamend
.Frameset_MindReader4:
oamframe BATTLE_ANIM_OAMSET_B5, 8, OAM_X_FLIP, OAM_Y_FLIP
oamframe BATTLE_ANIM_OAMSET_B5, 8, B_OAM_XFLIP, B_OAM_YFLIP
oamend
.Frameset_Safeguard:
@ -1112,7 +1112,7 @@ BattleAnimFrameData:
oamend
.Frameset_ImpFlipped:
oamframe BATTLE_ANIM_OAMSET_B8, 32, OAM_X_FLIP
oamframe BATTLE_ANIM_OAMSET_B8, 32, B_OAM_XFLIP
oamend
.Frameset_Cherub:
@ -1124,7 +1124,7 @@ BattleAnimFrameData:
oamend
.Frameset_EncoreHand:
oamframe BATTLE_ANIM_OAMSET_BB, 32, OAM_X_FLIP
oamframe BATTLE_ANIM_OAMSET_BB, 32, B_OAM_XFLIP
oamend
.Frameset_EncoreHandFlipped:
@ -1171,26 +1171,26 @@ BattleAnimFrameData:
oamdelete
.Frameset_CrossChop2:
oamframe BATTLE_ANIM_OAMSET_4B, 2, OAM_X_FLIP, OAM_Y_FLIP
oamframe BATTLE_ANIM_OAMSET_4C, 2, OAM_X_FLIP, OAM_Y_FLIP
oamframe BATTLE_ANIM_OAMSET_4D, 32, OAM_X_FLIP, OAM_Y_FLIP
oamframe BATTLE_ANIM_OAMSET_4D, 32, OAM_X_FLIP, OAM_Y_FLIP
oamframe BATTLE_ANIM_OAMSET_4D, 32, OAM_X_FLIP, OAM_Y_FLIP
oamframe BATTLE_ANIM_OAMSET_4F, 1, OAM_X_FLIP, OAM_Y_FLIP
oamframe BATTLE_ANIM_OAMSET_50, 1, OAM_X_FLIP, OAM_Y_FLIP
oamframe BATTLE_ANIM_OAMSET_51, 1, OAM_X_FLIP, OAM_Y_FLIP
oamframe BATTLE_ANIM_OAMSET_52, 2, OAM_X_FLIP, OAM_Y_FLIP
oamframe BATTLE_ANIM_OAMSET_4B, 2, B_OAM_XFLIP, B_OAM_YFLIP
oamframe BATTLE_ANIM_OAMSET_4C, 2, B_OAM_XFLIP, B_OAM_YFLIP
oamframe BATTLE_ANIM_OAMSET_4D, 32, B_OAM_XFLIP, B_OAM_YFLIP
oamframe BATTLE_ANIM_OAMSET_4D, 32, B_OAM_XFLIP, B_OAM_YFLIP
oamframe BATTLE_ANIM_OAMSET_4D, 32, B_OAM_XFLIP, B_OAM_YFLIP
oamframe BATTLE_ANIM_OAMSET_4F, 1, B_OAM_XFLIP, B_OAM_YFLIP
oamframe BATTLE_ANIM_OAMSET_50, 1, B_OAM_XFLIP, B_OAM_YFLIP
oamframe BATTLE_ANIM_OAMSET_51, 1, B_OAM_XFLIP, B_OAM_YFLIP
oamframe BATTLE_ANIM_OAMSET_52, 2, B_OAM_XFLIP, B_OAM_YFLIP
oamwait 2
oamframe BATTLE_ANIM_OAMSET_52, 2, OAM_X_FLIP, OAM_Y_FLIP
oamframe BATTLE_ANIM_OAMSET_52, 2, B_OAM_XFLIP, B_OAM_YFLIP
oamwait 2
oamframe BATTLE_ANIM_OAMSET_52, 2, OAM_X_FLIP, OAM_Y_FLIP
oamframe BATTLE_ANIM_OAMSET_52, 2, B_OAM_XFLIP, B_OAM_YFLIP
oamwait 2
oamframe BATTLE_ANIM_OAMSET_52, 2, OAM_X_FLIP, OAM_Y_FLIP
oamframe BATTLE_ANIM_OAMSET_52, 2, B_OAM_XFLIP, B_OAM_YFLIP
oamdelete
.Frameset_ZapCannon:
oamframe BATTLE_ANIM_OAMSET_C3, 1
oamframe BATTLE_ANIM_OAMSET_C3, 1, OAM_X_FLIP, OAM_Y_FLIP
oamframe BATTLE_ANIM_OAMSET_C3, 1, B_OAM_XFLIP, B_OAM_YFLIP
oamrestart
.Frameset_CurseNail:
@ -1205,7 +1205,7 @@ BattleAnimFrameData:
.Frameset_RapidSpin:
oamframe BATTLE_ANIM_OAMSET_C8, 1
oamframe BATTLE_ANIM_OAMSET_C8, 1, OAM_X_FLIP
oamframe BATTLE_ANIM_OAMSET_C8, 1, B_OAM_XFLIP
oamrestart
.Frameset_Swagger:
@ -1221,7 +1221,7 @@ BattleAnimFrameData:
oamrestart
.Frameset_UpsideDownPunch:
oamframe BATTLE_ANIM_OAMSET_03, 32, OAM_Y_FLIP
oamframe BATTLE_ANIM_OAMSET_03, 32, B_OAM_YFLIP
oamend
.Frameset_Rain:
@ -1238,8 +1238,8 @@ BattleAnimFrameData:
.Frameset_SpiralUnused:
oamframe BATTLE_ANIM_OAMSET_CD, 4
oamframe BATTLE_ANIM_OAMSET_CE, 4
oamframe BATTLE_ANIM_OAMSET_CD, 4, OAM_X_FLIP, OAM_Y_FLIP
oamframe BATTLE_ANIM_OAMSET_CE, 4, OAM_X_FLIP, OAM_Y_FLIP
oamframe BATTLE_ANIM_OAMSET_CD, 4, B_OAM_XFLIP, B_OAM_YFLIP
oamframe BATTLE_ANIM_OAMSET_CE, 4, B_OAM_XFLIP, B_OAM_YFLIP
oamrestart
.Frameset_Aeroblast:

View File

@ -241,9 +241,9 @@ BattleAnimOAMData:
.OAMData_02:
dbsprite -1, -1, 0, 0, $00, $0
dbsprite 0, -1, 0, 0, $00, X_FLIP
dbsprite -1, 0, 0, 0, $00, Y_FLIP
dbsprite 0, 0, 0, 0, $00, X_FLIP | Y_FLIP
dbsprite 0, -1, 0, 0, $00, OAM_XFLIP
dbsprite -1, 0, 0, 0, $00, OAM_YFLIP
dbsprite 0, 0, 0, 0, $00, OAM_XFLIP | OAM_YFLIP
.OAMData_c3:
dbsprite -2, -2, 4, 4, $00, $0
@ -259,13 +259,13 @@ BattleAnimOAMData:
.OAMData_01:
dbsprite -2, -2, 4, 4, $00, $0
dbsprite -1, -2, 4, 4, $01, $0
dbsprite 0, -2, 4, 4, $00, X_FLIP
dbsprite 0, -2, 4, 4, $00, OAM_XFLIP
dbsprite -2, -1, 4, 4, $02, $0
dbsprite -1, -1, 4, 4, $03, $0
dbsprite 0, -1, 4, 4, $02, X_FLIP | Y_FLIP
dbsprite -2, 0, 4, 4, $00, Y_FLIP
dbsprite -1, 0, 4, 4, $01, X_FLIP | Y_FLIP
dbsprite 0, 0, 4, 4, $00, X_FLIP | Y_FLIP
dbsprite 0, -1, 4, 4, $02, OAM_XFLIP | OAM_YFLIP
dbsprite -2, 0, 4, 4, $00, OAM_YFLIP
dbsprite -1, 0, 4, 4, $01, OAM_XFLIP | OAM_YFLIP
dbsprite 0, 0, 4, 4, $00, OAM_XFLIP | OAM_YFLIP
.OAMData_cf:
dbsprite -2, -2, 4, 0, $00, $0
@ -274,12 +274,12 @@ BattleAnimOAMData:
dbsprite -2, -1, 4, 0, $03, $0
dbsprite -1, -1, 4, 0, $04, $0
dbsprite 0, -1, 4, 0, $05, $0
dbsprite -2, 0, 4, 0, $05, X_FLIP | Y_FLIP
dbsprite -1, 0, 4, 0, $04, X_FLIP | Y_FLIP
dbsprite 0, 0, 4, 0, $03, X_FLIP | Y_FLIP
dbsprite -2, 1, 4, 0, $02, X_FLIP | Y_FLIP
dbsprite -1, 1, 4, 0, $01, X_FLIP | Y_FLIP
dbsprite 0, 1, 4, 0, $00, X_FLIP | Y_FLIP
dbsprite -2, 0, 4, 0, $05, OAM_XFLIP | OAM_YFLIP
dbsprite -1, 0, 4, 0, $04, OAM_XFLIP | OAM_YFLIP
dbsprite 0, 0, 4, 0, $03, OAM_XFLIP | OAM_YFLIP
dbsprite -2, 1, 4, 0, $02, OAM_XFLIP | OAM_YFLIP
dbsprite -1, 1, 4, 0, $01, OAM_XFLIP | OAM_YFLIP
dbsprite 0, 1, 4, 0, $00, OAM_XFLIP | OAM_YFLIP
.OAMData_1c:
dbsprite -2, -2, 0, 0, $00, $0
@ -304,56 +304,56 @@ BattleAnimOAMData:
dbsprite -1, -2, 0, 0, $01, $0
dbsprite -2, -1, 0, 0, $02, $0
dbsprite -1, -1, 0, 0, $03, $0
dbsprite 0, -2, 0, 0, $01, X_FLIP
dbsprite 1, -2, 0, 0, $00, X_FLIP
dbsprite 0, -1, 0, 0, $03, X_FLIP
dbsprite 1, -1, 0, 0, $02, X_FLIP
dbsprite -2, 0, 0, 0, $02, Y_FLIP
dbsprite -1, 0, 0, 0, $03, Y_FLIP
dbsprite -2, 1, 0, 0, $00, Y_FLIP
dbsprite -1, 1, 0, 0, $01, Y_FLIP
dbsprite 0, 0, 0, 0, $03, X_FLIP | Y_FLIP
dbsprite 1, 0, 0, 0, $02, X_FLIP | Y_FLIP
dbsprite 0, 1, 0, 0, $01, X_FLIP | Y_FLIP
dbsprite 1, 1, 0, 0, $00, X_FLIP | Y_FLIP
dbsprite 0, -2, 0, 0, $01, OAM_XFLIP
dbsprite 1, -2, 0, 0, $00, OAM_XFLIP
dbsprite 0, -1, 0, 0, $03, OAM_XFLIP
dbsprite 1, -1, 0, 0, $02, OAM_XFLIP
dbsprite -2, 0, 0, 0, $02, OAM_YFLIP
dbsprite -1, 0, 0, 0, $03, OAM_YFLIP
dbsprite -2, 1, 0, 0, $00, OAM_YFLIP
dbsprite -1, 1, 0, 0, $01, OAM_YFLIP
dbsprite 0, 0, 0, 0, $03, OAM_XFLIP | OAM_YFLIP
dbsprite 1, 0, 0, 0, $02, OAM_XFLIP | OAM_YFLIP
dbsprite 0, 1, 0, 0, $01, OAM_XFLIP | OAM_YFLIP
dbsprite 1, 1, 0, 0, $00, OAM_XFLIP | OAM_YFLIP
.OAMData_09:
dbsprite -3, -3, 4, 4, $00, $0
dbsprite -2, -3, 4, 4, $01, $0
dbsprite -3, -2, 4, 4, $02, $0
dbsprite -2, -2, 4, 4, $03, $0
dbsprite 0, -3, 4, 4, $01, X_FLIP
dbsprite 1, -3, 4, 4, $00, X_FLIP
dbsprite 0, -2, 4, 4, $03, X_FLIP
dbsprite 1, -2, 4, 4, $02, X_FLIP
dbsprite -3, 0, 4, 4, $02, Y_FLIP
dbsprite -2, 0, 4, 4, $03, Y_FLIP
dbsprite -3, 1, 4, 4, $00, Y_FLIP
dbsprite -2, 1, 4, 4, $01, Y_FLIP
dbsprite 0, 0, 4, 4, $03, X_FLIP | Y_FLIP
dbsprite 1, 0, 4, 4, $02, X_FLIP | Y_FLIP
dbsprite 0, 1, 4, 4, $01, X_FLIP | Y_FLIP
dbsprite 1, 1, 4, 4, $00, X_FLIP | Y_FLIP
dbsprite 0, -3, 4, 4, $01, OAM_XFLIP
dbsprite 1, -3, 4, 4, $00, OAM_XFLIP
dbsprite 0, -2, 4, 4, $03, OAM_XFLIP
dbsprite 1, -2, 4, 4, $02, OAM_XFLIP
dbsprite -3, 0, 4, 4, $02, OAM_YFLIP
dbsprite -2, 0, 4, 4, $03, OAM_YFLIP
dbsprite -3, 1, 4, 4, $00, OAM_YFLIP
dbsprite -2, 1, 4, 4, $01, OAM_YFLIP
dbsprite 0, 0, 4, 4, $03, OAM_XFLIP | OAM_YFLIP
dbsprite 1, 0, 4, 4, $02, OAM_XFLIP | OAM_YFLIP
dbsprite 0, 1, 4, 4, $01, OAM_XFLIP | OAM_YFLIP
dbsprite 1, 1, 4, 4, $00, OAM_XFLIP | OAM_YFLIP
.OAMData_0c:
dbsprite -1, -1, 0, 4, $00, $0
dbsprite 0, -1, 0, 4, $00, X_FLIP
dbsprite 0, -1, 0, 4, $00, OAM_XFLIP
.OAMData_6a:
dbsprite -1, 0, 0, 0, $00, $0
dbsprite 0, 0, 0, 0, $00, X_FLIP
dbsprite 0, 0, 0, 0, $00, OAM_XFLIP
.OAMData_04:
dbsprite -1, -1, 0, 0, $00, $0
dbsprite 0, -1, 0, 0, $00, X_FLIP
dbsprite 0, -1, 0, 0, $00, OAM_XFLIP
dbsprite -1, 0, 0, 0, $01, $0
dbsprite 0, 0, 0, 0, $01, X_FLIP
dbsprite 0, 0, 0, 0, $01, OAM_XFLIP
.OAMData_5d:
dbsprite -1, -1, 0, 0, $00, $0
dbsprite 0, -1, 0, 0, $01, $0
dbsprite -1, 0, 0, 0, $00, Y_FLIP
dbsprite 0, 0, 0, 0, $01, Y_FLIP
dbsprite -1, 0, 0, 0, $00, OAM_YFLIP
dbsprite 0, 0, 0, 0, $01, OAM_YFLIP
.OAMData_13:
dbsprite -1, -1, 0, 2, $02, $0
@ -387,33 +387,33 @@ BattleAnimOAMData:
.OAMData_2a:
dbsprite -1, -3, 0, 4, $00, $0
dbsprite 0, -3, 0, 4, $00, X_FLIP
dbsprite 0, -3, 0, 4, $00, OAM_XFLIP
dbsprite -1, -2, 0, 4, $01, $0
dbsprite 0, -2, 0, 4, $01, X_FLIP
dbsprite 0, -2, 0, 4, $01, OAM_XFLIP
dbsprite -1, -1, 4, 4, $02, $0
.OAMData_2b:
dbsprite -1, -4, 0, 4, $00, $0
dbsprite 0, -4, 0, 4, $00, X_FLIP
dbsprite 0, -4, 0, 4, $00, OAM_XFLIP
dbsprite -1, -3, 0, 4, $01, $0
dbsprite 0, -3, 0, 4, $01, X_FLIP
dbsprite 0, -3, 0, 4, $01, OAM_XFLIP
dbsprite -1, -2, 4, 4, $02, $0
dbsprite -1, -1, 4, 4, $02, $0
.OAMData_2c:
dbsprite -1, -5, 0, 4, $00, $0
dbsprite 0, -5, 0, 4, $00, X_FLIP
dbsprite 0, -5, 0, 4, $00, OAM_XFLIP
dbsprite -1, -4, 0, 4, $01, $0
dbsprite 0, -4, 0, 4, $01, X_FLIP
dbsprite 0, -4, 0, 4, $01, OAM_XFLIP
dbsprite -1, -3, 4, 4, $02, $0
dbsprite -1, -2, 4, 4, $02, $0
dbsprite -1, -1, 4, 4, $02, $0
.OAMData_2d:
dbsprite -1, -6, 0, 4, $00, $0
dbsprite 0, -6, 0, 4, $00, X_FLIP
dbsprite 0, -6, 0, 4, $00, OAM_XFLIP
dbsprite -1, -5, 0, 4, $01, $0
dbsprite 0, -5, 0, 4, $01, X_FLIP
dbsprite 0, -5, 0, 4, $01, OAM_XFLIP
dbsprite -1, -4, 4, 4, $02, $0
dbsprite -1, -3, 4, 4, $02, $0
dbsprite -1, -2, 4, 4, $02, $0
@ -421,9 +421,9 @@ BattleAnimOAMData:
.OAMData_2e:
dbsprite -1, -7, 0, 4, $00, $0
dbsprite 0, -7, 0, 4, $00, X_FLIP
dbsprite 0, -7, 0, 4, $00, OAM_XFLIP
dbsprite -1, -6, 0, 4, $01, $0
dbsprite 0, -6, 0, 4, $01, X_FLIP
dbsprite 0, -6, 0, 4, $01, OAM_XFLIP
dbsprite -1, -5, 4, 4, $02, $0
dbsprite -1, -4, 4, 4, $02, $0
dbsprite -1, -3, 4, 4, $02, $0
@ -432,15 +432,15 @@ BattleAnimOAMData:
.OAMData_2f:
dbsprite -1, -1, 0, 0, $00, $0
dbsprite 0, -1, 0, 0, $00, X_FLIP
dbsprite 0, -1, 0, 0, $00, OAM_XFLIP
dbsprite -1, 0, 0, 0, $01, $0
dbsprite 0, 0, 0, 0, $00, X_FLIP | Y_FLIP
dbsprite 0, 0, 0, 0, $00, OAM_XFLIP | OAM_YFLIP
.OAMData_30:
dbsprite -1, -1, 0, 0, $00, $0
dbsprite 0, -1, 0, 0, $01, $0
dbsprite -1, 0, 0, 0, $01, X_FLIP | Y_FLIP
dbsprite 0, 0, 0, 0, $00, X_FLIP | Y_FLIP
dbsprite -1, 0, 0, 0, $01, OAM_XFLIP | OAM_YFLIP
dbsprite 0, 0, 0, 0, $00, OAM_XFLIP | OAM_YFLIP
.OAMData_31:
dbsprite -1, -2, 0, 4, $00, $0
@ -526,28 +526,28 @@ BattleAnimOAMData:
dbsprite 1, -1, 0, 4, $0b, $0
.OAMData_3e:
dbsprite -2, 1, 0, 4, $00, Y_FLIP
dbsprite -1, 1, 0, 4, $02, Y_FLIP
dbsprite 0, 1, 0, 4, $02, X_FLIP | Y_FLIP
dbsprite 1, 1, 0, 4, $00, X_FLIP | Y_FLIP
dbsprite -3, -1, 0, 4, $09, X_FLIP
dbsprite -2, -1, 0, 4, $08, X_FLIP
dbsprite -2, 1, 0, 4, $00, OAM_YFLIP
dbsprite -1, 1, 0, 4, $02, OAM_YFLIP
dbsprite 0, 1, 0, 4, $02, OAM_XFLIP | OAM_YFLIP
dbsprite 1, 1, 0, 4, $00, OAM_XFLIP | OAM_YFLIP
dbsprite -3, -1, 0, 4, $09, OAM_XFLIP
dbsprite -2, -1, 0, 4, $08, OAM_XFLIP
dbsprite -1, -1, 0, 4, $06, $0
dbsprite 0, -1, 0, 4, $07, $0
dbsprite 1, -1, 0, 4, $08, $0
dbsprite 2, -1, 0, 4, $09, $0
dbsprite -3, 0, 0, 4, $01, X_FLIP
dbsprite -2, 0, 0, 4, $00, X_FLIP
dbsprite -3, 0, 0, 4, $01, OAM_XFLIP
dbsprite -2, 0, 0, 4, $00, OAM_XFLIP
dbsprite -1, 0, 0, 4, $0c, $0
dbsprite 0, 0, 0, 4, $0d, $0
dbsprite 1, 0, 0, 4, $00, $0
dbsprite 2, 0, 0, 4, $01, $0
dbsprite -2, -3, 0, 4, $00, $0
dbsprite -1, -3, 0, 4, $02, $0
dbsprite 0, -3, 0, 4, $02, X_FLIP
dbsprite 1, -3, 0, 4, $00, X_FLIP
dbsprite -3, -2, 0, 4, $03, X_FLIP
dbsprite -2, -2, 0, 4, $02, X_FLIP
dbsprite 0, -3, 0, 4, $02, OAM_XFLIP
dbsprite 1, -3, 0, 4, $00, OAM_XFLIP
dbsprite -3, -2, 0, 4, $03, OAM_XFLIP
dbsprite -2, -2, 0, 4, $02, OAM_XFLIP
dbsprite -1, -2, 0, 4, $04, $0
dbsprite 0, -2, 0, 4, $05, $0
dbsprite 1, -2, 0, 4, $02, $0
@ -556,62 +556,62 @@ BattleAnimOAMData:
.OAMData_41:
dbsprite -2, -3, 0, 4, $00, $0
dbsprite -1, -3, 0, 4, $02, $0
dbsprite 0, -3, 0, 4, $02, X_FLIP
dbsprite 1, -3, 0, 4, $00, X_FLIP
dbsprite 0, -3, 0, 4, $02, OAM_XFLIP
dbsprite 1, -3, 0, 4, $00, OAM_XFLIP
dbsprite -3, -2, 4, 4, $00, $0
dbsprite -2, -2, 4, 4, $01, $0
dbsprite -1, -2, 0, 4, $05, X_FLIP
dbsprite 0, -2, 0, 4, $04, X_FLIP
dbsprite 0, -2, 4, 4, $01, X_FLIP
dbsprite 1, -2, 4, 4, $00, X_FLIP
dbsprite -1, -2, 0, 4, $05, OAM_XFLIP
dbsprite 0, -2, 0, 4, $04, OAM_XFLIP
dbsprite 0, -2, 4, 4, $01, OAM_XFLIP
dbsprite 1, -2, 4, 4, $00, OAM_XFLIP
dbsprite -3, -1, 4, 4, $02, $0
dbsprite -2, -1, 4, 4, $03, $0
dbsprite -1, -1, 0, 4, $07, X_FLIP
dbsprite 0, -1, 0, 4, $06, X_FLIP
dbsprite 0, -1, 4, 4, $03, X_FLIP
dbsprite 1, -1, 4, 4, $02, X_FLIP
dbsprite -1, -1, 0, 4, $07, OAM_XFLIP
dbsprite 0, -1, 0, 4, $06, OAM_XFLIP
dbsprite 0, -1, 4, 4, $03, OAM_XFLIP
dbsprite 1, -1, 4, 4, $02, OAM_XFLIP
dbsprite -3, 0, 4, 4, $04, $0
dbsprite -2, 0, 4, 4, $05, $0
dbsprite -1, 0, 0, 4, $0d, X_FLIP
dbsprite 0, 0, 0, 4, $0c, X_FLIP
dbsprite 0, 0, 4, 4, $05, X_FLIP
dbsprite 1, 0, 4, 4, $04, X_FLIP
dbsprite -2, 1, 0, 4, $00, Y_FLIP
dbsprite -1, 1, 0, 4, $02, Y_FLIP
dbsprite 0, 1, 0, 4, $02, X_FLIP | Y_FLIP
dbsprite 1, 1, 0, 4, $00, X_FLIP | Y_FLIP
dbsprite -1, 0, 0, 4, $0d, OAM_XFLIP
dbsprite 0, 0, 0, 4, $0c, OAM_XFLIP
dbsprite 0, 0, 4, 4, $05, OAM_XFLIP
dbsprite 1, 0, 4, 4, $04, OAM_XFLIP
dbsprite -2, 1, 0, 4, $00, OAM_YFLIP
dbsprite -1, 1, 0, 4, $02, OAM_YFLIP
dbsprite 0, 1, 0, 4, $02, OAM_XFLIP | OAM_YFLIP
dbsprite 1, 1, 0, 4, $00, OAM_XFLIP | OAM_YFLIP
.OAMData_42:
dbsprite -1, -3, 4, 0, $02, $0
dbsprite -1, 2, 4, 0, $02, X_FLIP | Y_FLIP
dbsprite -1, 2, 4, 0, $02, OAM_XFLIP | OAM_YFLIP
dbsprite -3, -1, 0, 4, $01, $0
dbsprite 2, -1, 0, 4, $01, X_FLIP | Y_FLIP
dbsprite 2, -1, 0, 4, $01, OAM_XFLIP | OAM_YFLIP
dbsprite -1, -4, 4, 0, $02, $0
dbsprite -1, 3, 4, 0, $02, X_FLIP | Y_FLIP
dbsprite -1, 3, 4, 0, $02, OAM_XFLIP | OAM_YFLIP
dbsprite -4, -1, 0, 4, $01, $0
dbsprite 3, -1, 0, 4, $01, X_FLIP | Y_FLIP
dbsprite 3, -1, 0, 4, $01, OAM_XFLIP | OAM_YFLIP
.OAMData_44:
dbsprite -3, -3, 5, 5, $00, X_FLIP
dbsprite -3, -3, 5, 5, $00, OAM_XFLIP
dbsprite 1, -3, 3, 5, $00, $0
dbsprite -3, 1, 5, 3, $00, X_FLIP | Y_FLIP
dbsprite 1, 1, 3, 3, $00, Y_FLIP
dbsprite -4, -4, 5, 5, $00, X_FLIP
dbsprite -3, 1, 5, 3, $00, OAM_XFLIP | OAM_YFLIP
dbsprite 1, 1, 3, 3, $00, OAM_YFLIP
dbsprite -4, -4, 5, 5, $00, OAM_XFLIP
dbsprite 2, -4, 3, 5, $00, $0
dbsprite -4, 2, 5, 3, $00, X_FLIP | Y_FLIP
dbsprite 2, 2, 3, 3, $00, Y_FLIP
dbsprite -4, 2, 5, 3, $00, OAM_XFLIP | OAM_YFLIP
dbsprite 2, 2, 3, 3, $00, OAM_YFLIP
.OAMData_46:
dbsprite -1, -3, 4, 4, $02, $0
dbsprite -1, 1, 4, 4, $02, X_FLIP | Y_FLIP
dbsprite -1, 1, 4, 4, $02, OAM_XFLIP | OAM_YFLIP
dbsprite -3, -1, 4, 4, $01, $0
dbsprite 1, -1, 4, 4, $01, X_FLIP | Y_FLIP
dbsprite 1, -1, 4, 4, $01, OAM_XFLIP | OAM_YFLIP
.OAMData_47:
dbsprite -2, -2, 0, 0, $00, X_FLIP
dbsprite -2, -2, 0, 0, $00, OAM_XFLIP
dbsprite 1, -2, 0, 0, $00, $0
dbsprite -2, 1, 0, 0, $00, X_FLIP | Y_FLIP
dbsprite 1, 1, 0, 0, $00, Y_FLIP
dbsprite -2, 1, 0, 0, $00, OAM_XFLIP | OAM_YFLIP
dbsprite 1, 1, 0, 0, $00, OAM_YFLIP
.OAMData_48:
dbsprite -1, -3, 4, 0, $00, $0
@ -622,38 +622,38 @@ BattleAnimOAMData:
dbsprite -1, 2, 4, 0, $00, $0
.OAMData_49:
dbsprite -2, -1, 0, 4, $00, X_FLIP
dbsprite -1, -1, 0, 2, $00, X_FLIP
dbsprite -2, -1, 0, 4, $00, OAM_XFLIP
dbsprite -1, -1, 0, 2, $00, OAM_XFLIP
dbsprite 0, -1, 0, 2, $00, $0
dbsprite 1, -1, 0, 4, $00, $0
.OAMData_4a:
dbsprite -1, -1, 0, 4, $00, X_FLIP | Y_FLIP
dbsprite 0, -1, 0, 4, $00, Y_FLIP
dbsprite -1, -1, 0, 4, $00, OAM_XFLIP | OAM_YFLIP
dbsprite 0, -1, 0, 4, $00, OAM_YFLIP
.OAMData_0f:
dbsprite -1, -1, 4, 4, $00, $0
dbsprite -2, -1, 4, 4, $01, $0
dbsprite -1, -1, 4, 4, $01, X_FLIP
dbsprite -2, 0, 4, 4, $01, Y_FLIP
dbsprite -1, 0, 4, 4, $01, X_FLIP | Y_FLIP
dbsprite -1, -1, 4, 4, $01, OAM_XFLIP
dbsprite -2, 0, 4, 4, $01, OAM_YFLIP
dbsprite -1, 0, 4, 4, $01, OAM_XFLIP | OAM_YFLIP
.OAMData_4c:
dbsprite -1, -1, 4, 4, $00, $0
dbsprite -2, 0, 6, 2, $00, $0
dbsprite -3, 0, 6, 2, $01, $0
dbsprite -2, 0, 6, 2, $01, X_FLIP
dbsprite -3, 1, 6, 2, $01, Y_FLIP
dbsprite -2, 1, 6, 2, $01, X_FLIP | Y_FLIP
dbsprite -2, 0, 6, 2, $01, OAM_XFLIP
dbsprite -3, 1, 6, 2, $01, OAM_YFLIP
dbsprite -2, 1, 6, 2, $01, OAM_XFLIP | OAM_YFLIP
.OAMData_4d:
dbsprite -1, -1, 4, 4, $00, $0
dbsprite -2, 0, 6, 2, $00, $0
dbsprite -2, 1, 0, 0, $00, $0
dbsprite -3, 1, 0, 0, $01, $0
dbsprite -2, 1, 0, 0, $01, X_FLIP
dbsprite -3, 2, 0, 0, $01, Y_FLIP
dbsprite -2, 2, 0, 0, $01, X_FLIP | Y_FLIP
dbsprite -2, 1, 0, 0, $01, OAM_XFLIP
dbsprite -3, 2, 0, 0, $01, OAM_YFLIP
dbsprite -2, 2, 0, 0, $01, OAM_XFLIP | OAM_YFLIP
.OAMData_4f:
dbsprite -1, -1, 4, 4, $00, $0
@ -661,9 +661,9 @@ BattleAnimOAMData:
dbsprite -2, 1, 0, 0, $00, $0
dbsprite -3, 1, 2, 6, $00, $0
dbsprite -4, 1, 2, 6, $01, $0
dbsprite -3, 1, 2, 6, $01, X_FLIP
dbsprite -4, 2, 2, 6, $01, Y_FLIP
dbsprite -3, 2, 2, 6, $01, X_FLIP | Y_FLIP
dbsprite -3, 1, 2, 6, $01, OAM_XFLIP
dbsprite -4, 2, 2, 6, $01, OAM_YFLIP
dbsprite -3, 2, 2, 6, $01, OAM_XFLIP | OAM_YFLIP
.OAMData_50:
dbsprite -1, -1, 4, 4, $00, $0
@ -672,9 +672,9 @@ BattleAnimOAMData:
dbsprite -3, 1, 2, 6, $00, $0
dbsprite -4, 2, 4, 4, $00, $0
dbsprite -5, 2, 4, 4, $01, $0
dbsprite -4, 2, 4, 4, $01, X_FLIP
dbsprite -5, 3, 4, 4, $01, Y_FLIP
dbsprite -4, 3, 4, 4, $01, X_FLIP | Y_FLIP
dbsprite -4, 2, 4, 4, $01, OAM_XFLIP
dbsprite -5, 3, 4, 4, $01, OAM_YFLIP
dbsprite -4, 3, 4, 4, $01, OAM_XFLIP | OAM_YFLIP
.OAMData_51:
dbsprite -1, -1, 4, 4, $00, $0
@ -684,21 +684,21 @@ BattleAnimOAMData:
dbsprite -4, 2, 4, 4, $00, $0
dbsprite -5, 3, 6, 2, $00, $0
dbsprite -6, 3, 6, 2, $01, $0
dbsprite -5, 3, 6, 2, $01, X_FLIP
dbsprite -6, 4, 6, 2, $01, Y_FLIP
dbsprite -5, 4, 6, 2, $01, X_FLIP | Y_FLIP
dbsprite -5, 3, 6, 2, $01, OAM_XFLIP
dbsprite -6, 4, 6, 2, $01, OAM_YFLIP
dbsprite -5, 4, 6, 2, $01, OAM_XFLIP | OAM_YFLIP
.OAMData_59:
dbsprite -2, -1, 0, 4, $00, $0
dbsprite -1, -1, 0, 4, $01, $0
dbsprite 0, -1, 0, 4, $01, X_FLIP
dbsprite 1, -1, 0, 4, $00, X_FLIP
dbsprite 0, -1, 0, 4, $01, OAM_XFLIP
dbsprite 1, -1, 0, 4, $00, OAM_XFLIP
.OAMData_5a:
dbsprite -2, -1, 0, 4, $02, $0
dbsprite -1, -1, 0, 4, $01, $0
dbsprite 0, -1, 0, 4, $01, X_FLIP
dbsprite 1, -1, 0, 4, $02, X_FLIP
dbsprite 0, -1, 0, 4, $01, OAM_XFLIP
dbsprite 1, -1, 0, 4, $02, OAM_XFLIP
.OAMData_60:
dbsprite -1, -1, 4, 0, $00, $0
@ -718,62 +718,62 @@ BattleAnimOAMData:
dbsprite 2, -2, 4, 4, $08, $0
.OAMData_65:
dbsprite -4, -2, 4, 4, $08, X_FLIP
dbsprite -3, -2, 4, 4, $07, X_FLIP
dbsprite -4, -1, 4, 4, $06, X_FLIP
dbsprite -3, -1, 4, 4, $05, X_FLIP
dbsprite -2, -1, 4, 4, $04, X_FLIP
dbsprite -1, -1, 4, 4, $03, X_FLIP
dbsprite 0, -1, 4, 4, $02, X_FLIP
dbsprite 1, -1, 4, 4, $01, X_FLIP
dbsprite 2, -1, 4, 4, $00, X_FLIP
dbsprite -4, -2, 4, 4, $08, OAM_XFLIP
dbsprite -3, -2, 4, 4, $07, OAM_XFLIP
dbsprite -4, -1, 4, 4, $06, OAM_XFLIP
dbsprite -3, -1, 4, 4, $05, OAM_XFLIP
dbsprite -2, -1, 4, 4, $04, OAM_XFLIP
dbsprite -1, -1, 4, 4, $03, OAM_XFLIP
dbsprite 0, -1, 4, 4, $02, OAM_XFLIP
dbsprite 1, -1, 4, 4, $01, OAM_XFLIP
dbsprite 2, -1, 4, 4, $00, OAM_XFLIP
.OAMData_d4:
dbsprite -4, 0, 4, 0, $00, OBP_NUM
dbsprite -3, 0, 4, 0, $01, OBP_NUM
dbsprite -2, 0, 4, 0, $02, OBP_NUM
dbsprite -1, 0, 4, 0, $03, OBP_NUM
dbsprite 0, 0, 4, 0, $04, OBP_NUM
dbsprite 1, 0, 4, 0, $05, OBP_NUM
dbsprite 2, 0, 4, 0, $06, OBP_NUM
dbsprite -4, 0, 4, 0, $00, OAM_PAL1
dbsprite -3, 0, 4, 0, $01, OAM_PAL1
dbsprite -2, 0, 4, 0, $02, OAM_PAL1
dbsprite -1, 0, 4, 0, $03, OAM_PAL1
dbsprite 0, 0, 4, 0, $04, OAM_PAL1
dbsprite 1, 0, 4, 0, $05, OAM_PAL1
dbsprite 2, 0, 4, 0, $06, OAM_PAL1
.OAMData_d6:
dbsprite -4, -1, 4, 0, $00, OBP_NUM
dbsprite -4, 0, 4, 0, $01, OBP_NUM
dbsprite -3, -1, 4, 0, $02, OBP_NUM
dbsprite -3, 0, 4, 0, $03, OBP_NUM
dbsprite -2, -1, 4, 0, $04, OBP_NUM
dbsprite -2, 0, 4, 0, $05, OBP_NUM
dbsprite -1, -1, 4, 0, $06, OBP_NUM
dbsprite -1, 0, 4, 0, $07, OBP_NUM
dbsprite 0, -1, 4, 0, $08, OBP_NUM
dbsprite 0, 0, 4, 0, $09, OBP_NUM
dbsprite 1, -1, 4, 0, $0a, OBP_NUM
dbsprite 1, 0, 4, 0, $0b, OBP_NUM
dbsprite 2, -1, 4, 0, $0c, OBP_NUM
dbsprite 2, 0, 4, 0, $0d, OBP_NUM
dbsprite -4, -1, 4, 0, $00, OAM_PAL1
dbsprite -4, 0, 4, 0, $01, OAM_PAL1
dbsprite -3, -1, 4, 0, $02, OAM_PAL1
dbsprite -3, 0, 4, 0, $03, OAM_PAL1
dbsprite -2, -1, 4, 0, $04, OAM_PAL1
dbsprite -2, 0, 4, 0, $05, OAM_PAL1
dbsprite -1, -1, 4, 0, $06, OAM_PAL1
dbsprite -1, 0, 4, 0, $07, OAM_PAL1
dbsprite 0, -1, 4, 0, $08, OAM_PAL1
dbsprite 0, 0, 4, 0, $09, OAM_PAL1
dbsprite 1, -1, 4, 0, $0a, OAM_PAL1
dbsprite 1, 0, 4, 0, $0b, OAM_PAL1
dbsprite 2, -1, 4, 0, $0c, OAM_PAL1
dbsprite 2, 0, 4, 0, $0d, OAM_PAL1
.OAMData_d5:
dbsprite -3, 0, 0, 0, $00, $1 | OBP_NUM
dbsprite -2, 0, 0, 0, $01, $1 | OBP_NUM
dbsprite -1, 0, 0, 0, $02, $1 | OBP_NUM
dbsprite 0, 0, 0, 0, $03, $1 | OBP_NUM
dbsprite 1, 0, 0, 0, $04, $1 | OBP_NUM
dbsprite 2, 0, 0, 0, $05, $1 | OBP_NUM
dbsprite -3, 0, 0, 0, $00, $1 | OAM_PAL1
dbsprite -2, 0, 0, 0, $01, $1 | OAM_PAL1
dbsprite -1, 0, 0, 0, $02, $1 | OAM_PAL1
dbsprite 0, 0, 0, 0, $03, $1 | OAM_PAL1
dbsprite 1, 0, 0, 0, $04, $1 | OAM_PAL1
dbsprite 2, 0, 0, 0, $05, $1 | OAM_PAL1
.OAMData_d7:
dbsprite -3, 0, 0, 0, $00, $1 | OBP_NUM
dbsprite -3, 1, 0, 0, $01, $1 | OBP_NUM
dbsprite -2, 0, 0, 0, $02, $1 | OBP_NUM
dbsprite -2, 1, 0, 0, $03, $1 | OBP_NUM
dbsprite -1, 0, 0, 0, $04, $1 | OBP_NUM
dbsprite -1, 1, 0, 0, $05, $1 | OBP_NUM
dbsprite 0, 0, 0, 0, $06, $1 | OBP_NUM
dbsprite 0, 1, 0, 0, $07, $1 | OBP_NUM
dbsprite 1, 0, 0, 0, $08, $1 | OBP_NUM
dbsprite 1, 1, 0, 0, $09, $1 | OBP_NUM
dbsprite 2, 0, 0, 0, $0a, $1 | OBP_NUM
dbsprite 2, 1, 0, 0, $0b, $1 | OBP_NUM
dbsprite -3, 0, 0, 0, $00, $1 | OAM_PAL1
dbsprite -3, 1, 0, 0, $01, $1 | OAM_PAL1
dbsprite -2, 0, 0, 0, $02, $1 | OAM_PAL1
dbsprite -2, 1, 0, 0, $03, $1 | OAM_PAL1
dbsprite -1, 0, 0, 0, $04, $1 | OAM_PAL1
dbsprite -1, 1, 0, 0, $05, $1 | OAM_PAL1
dbsprite 0, 0, 0, 0, $06, $1 | OAM_PAL1
dbsprite 0, 1, 0, 0, $07, $1 | OAM_PAL1
dbsprite 1, 0, 0, 0, $08, $1 | OAM_PAL1
dbsprite 1, 1, 0, 0, $09, $1 | OAM_PAL1
dbsprite 2, 0, 0, 0, $0a, $1 | OAM_PAL1
dbsprite 2, 1, 0, 0, $0b, $1 | OAM_PAL1
.OAMData_6e:
dbsprite 0, -2, 4, 4, $00, $0
@ -788,94 +788,94 @@ BattleAnimOAMData:
dbsprite 0, -1, 4, 4, $02, $0
.OAMData_77:
dbsprite 1, -4, 4, 4, $01, X_FLIP | Y_FLIP
dbsprite 1, -4, 4, 4, $01, OAM_XFLIP | OAM_YFLIP
.OAMData_78:
dbsprite 1, -4, 4, 4, $00, $0
dbsprite 0, -4, 4, 4, $01, X_FLIP | Y_FLIP
dbsprite 1, -3, 4, 4, $01, X_FLIP | Y_FLIP
dbsprite 0, -4, 4, 4, $01, OAM_XFLIP | OAM_YFLIP
dbsprite 1, -3, 4, 4, $01, OAM_XFLIP | OAM_YFLIP
.OAMData_79:
dbsprite 1, -4, 4, 4, $01, $0
dbsprite 0, -4, 4, 4, $00, $0
dbsprite -1, -4, 4, 4, $01, X_FLIP | Y_FLIP
dbsprite -1, -4, 4, 4, $01, OAM_XFLIP | OAM_YFLIP
dbsprite 1, -3, 4, 4, $00, $0
dbsprite 0, -3, 4, 4, $01, X_FLIP | Y_FLIP
dbsprite 1, -2, 4, 4, $01, X_FLIP | Y_FLIP
dbsprite 0, -3, 4, 4, $01, OAM_XFLIP | OAM_YFLIP
dbsprite 1, -2, 4, 4, $01, OAM_XFLIP | OAM_YFLIP
.OAMData_7a:
dbsprite -2, -4, 4, 4, $01, X_FLIP | Y_FLIP
dbsprite -2, -4, 4, 4, $01, OAM_XFLIP | OAM_YFLIP
dbsprite -1, -4, 4, 4, $00, $0
dbsprite 0, -4, 4, 4, $01, $0
dbsprite -1, -3, 4, 4, $01, X_FLIP | Y_FLIP
dbsprite -1, -3, 4, 4, $01, OAM_XFLIP | OAM_YFLIP
dbsprite 0, -3, 4, 4, $00, $0
dbsprite 1, -3, 4, 4, $01, $0
dbsprite 0, -2, 4, 4, $01, X_FLIP | Y_FLIP
dbsprite 0, -2, 4, 4, $01, OAM_XFLIP | OAM_YFLIP
dbsprite 1, -2, 4, 4, $00, $0
dbsprite 1, -1, 4, 4, $01, X_FLIP | Y_FLIP
dbsprite 1, -1, 4, 4, $01, OAM_XFLIP | OAM_YFLIP
.OAMData_7b:
dbsprite -3, -4, 4, 4, $01, X_FLIP | Y_FLIP
dbsprite -3, -4, 4, 4, $01, OAM_XFLIP | OAM_YFLIP
dbsprite -2, -4, 4, 4, $00, $0
dbsprite -1, -4, 4, 4, $01, $0
dbsprite -2, -3, 4, 4, $01, X_FLIP | Y_FLIP
dbsprite -2, -3, 4, 4, $01, OAM_XFLIP | OAM_YFLIP
dbsprite -1, -3, 4, 4, $00, $0
dbsprite 0, -3, 4, 4, $01, $0
dbsprite -1, -2, 4, 4, $01, X_FLIP | Y_FLIP
dbsprite -1, -2, 4, 4, $01, OAM_XFLIP | OAM_YFLIP
dbsprite 0, -2, 4, 4, $00, $0
dbsprite 1, -2, 4, 4, $01, $0
dbsprite 0, -1, 4, 4, $01, X_FLIP | Y_FLIP
dbsprite 0, -1, 4, 4, $01, OAM_XFLIP | OAM_YFLIP
dbsprite 1, -1, 4, 4, $00, $0
dbsprite 1, 0, 4, 4, $01, X_FLIP | Y_FLIP
dbsprite 1, 0, 4, 4, $01, OAM_XFLIP | OAM_YFLIP
.OAMData_7c:
dbsprite -3, -4, 4, 4, $00, $0
dbsprite -2, -4, 4, 4, $01, $0
dbsprite -3, -3, 4, 4, $01, X_FLIP | Y_FLIP
dbsprite -3, -3, 4, 4, $01, OAM_XFLIP | OAM_YFLIP
dbsprite -2, -3, 4, 4, $00, $0
dbsprite -1, -3, 4, 4, $01, $0
dbsprite -2, -2, 4, 4, $01, X_FLIP | Y_FLIP
dbsprite -2, -2, 4, 4, $01, OAM_XFLIP | OAM_YFLIP
dbsprite -1, -2, 4, 4, $00, $0
dbsprite 0, -2, 4, 4, $01, $0
dbsprite -1, -1, 4, 4, $01, X_FLIP | Y_FLIP
dbsprite -1, -1, 4, 4, $01, OAM_XFLIP | OAM_YFLIP
dbsprite 0, -1, 4, 4, $00, $0
dbsprite 1, -1, 4, 4, $01, $0
dbsprite 0, 0, 4, 4, $01, X_FLIP | Y_FLIP
dbsprite 0, 0, 4, 4, $01, OAM_XFLIP | OAM_YFLIP
dbsprite 1, 0, 4, 4, $00, $0
dbsprite 1, 1, 4, 4, $01, X_FLIP | Y_FLIP
dbsprite 1, 1, 4, 4, $01, OAM_XFLIP | OAM_YFLIP
.OAMData_7d:
dbsprite -3, -4, 4, 4, $01, $0
dbsprite -3, -3, 4, 4, $00, $0
dbsprite -2, -3, 4, 4, $01, $0
dbsprite -3, -2, 4, 4, $01, X_FLIP | Y_FLIP
dbsprite -3, -2, 4, 4, $01, OAM_XFLIP | OAM_YFLIP
dbsprite -2, -2, 4, 4, $00, $0
dbsprite -1, -2, 4, 4, $01, $0
dbsprite -2, -1, 4, 4, $01, X_FLIP | Y_FLIP
dbsprite -2, -1, 4, 4, $01, OAM_XFLIP | OAM_YFLIP
dbsprite -1, -1, 4, 4, $00, $0
dbsprite 0, -1, 4, 4, $01, $0
dbsprite -1, 0, 4, 4, $01, X_FLIP | Y_FLIP
dbsprite -1, 0, 4, 4, $01, OAM_XFLIP | OAM_YFLIP
dbsprite 0, 0, 4, 4, $00, $0
dbsprite 1, 0, 4, 4, $01, $0
dbsprite 0, 1, 4, 4, $01, X_FLIP | Y_FLIP
dbsprite 0, 1, 4, 4, $01, OAM_XFLIP | OAM_YFLIP
dbsprite 1, 1, 4, 4, $00, $0
dbsprite 1, 2, 4, 4, $01, X_FLIP | Y_FLIP
dbsprite 1, 2, 4, 4, $01, OAM_XFLIP | OAM_YFLIP
.OAMData_70:
dbsprite -1, -2, 0, 0, $00, $0
dbsprite -1, -1, 0, 0, $01, $0
dbsprite 0, -2, 0, 0, $00, X_FLIP
dbsprite 0, -1, 0, 0, $01, X_FLIP
dbsprite -1, 0, 0, 0, $01, Y_FLIP
dbsprite -1, 1, 0, 0, $00, Y_FLIP
dbsprite 0, 0, 0, 0, $01, X_FLIP | Y_FLIP
dbsprite 0, 1, 0, 0, $00, X_FLIP | Y_FLIP
dbsprite 0, -2, 0, 0, $00, OAM_XFLIP
dbsprite 0, -1, 0, 0, $01, OAM_XFLIP
dbsprite -1, 0, 0, 0, $01, OAM_YFLIP
dbsprite -1, 1, 0, 0, $00, OAM_YFLIP
dbsprite 0, 0, 0, 0, $01, OAM_XFLIP | OAM_YFLIP
dbsprite 0, 1, 0, 0, $00, OAM_XFLIP | OAM_YFLIP
.OAMData_81:
dbsprite -1, -1, 0, 0, $00, $0
dbsprite 0, -1, 0, 0, $01, $0
dbsprite -1, 0, 0, 0, $01, X_FLIP | Y_FLIP
dbsprite 0, 0, 0, 0, $00, X_FLIP | Y_FLIP
dbsprite -1, 0, 0, 0, $01, OAM_XFLIP | OAM_YFLIP
dbsprite 0, 0, 0, 0, $00, OAM_XFLIP | OAM_YFLIP
.OAMData_87:
dbsprite -1, -2, 0, 4, $00, $0
@ -923,8 +923,8 @@ BattleAnimOAMData:
dbsprite -1, -3, 4, 4, $00, $0
dbsprite -1, -2, 4, 4, $01, $0
dbsprite -1, -1, 4, 4, $02, $0
dbsprite -1, 0, 4, 4, $01, Y_FLIP
dbsprite -1, 1, 4, 4, $00, Y_FLIP
dbsprite -1, 0, 4, 4, $01, OAM_YFLIP
dbsprite -1, 1, 4, 4, $00, OAM_YFLIP
.OAMData_8f:
dbsprite -2, -1, 0, 4, $00, $0
@ -988,9 +988,9 @@ BattleAnimOAMData:
dbsprite -1, 0, 0, 4, $02, $0
dbsprite 0, 0, 0, 4, $03, $0
dbsprite -1, -1, 0, 4, $01, $0
dbsprite 0, -1, 0, 4, $01, X_FLIP
dbsprite 0, -1, 0, 4, $01, OAM_XFLIP
dbsprite -1, -2, 0, 4, $00, $0
dbsprite 0, -2, 0, 4, $00, X_FLIP
dbsprite 0, -2, 0, 4, $00, OAM_XFLIP
.OAMData_9f:
dbsprite -2, -1, 0, 0, $00, $0
@ -1018,49 +1018,49 @@ BattleAnimOAMData:
dbsprite -2, -1, 4, 4, $03, $0
dbsprite -1, -1, 4, 4, $04, $0
dbsprite 0, -1, 4, 4, $05, $0
dbsprite -2, 0, 4, 4, $00, Y_FLIP
dbsprite -1, 0, 4, 4, $01, Y_FLIP
dbsprite 0, 0, 4, 4, $02, Y_FLIP
dbsprite -2, 0, 4, 4, $00, OAM_YFLIP
dbsprite -1, 0, 4, 4, $01, OAM_YFLIP
dbsprite 0, 0, 4, 4, $02, OAM_YFLIP
.OAMData_ac:
dbsprite -2, -1, 0, 4, $00, $0
dbsprite -1, -1, 0, 4, $01, $0
dbsprite 0, -1, 0, 4, $01, X_FLIP
dbsprite 1, -1, 0, 4, $00, X_FLIP
dbsprite 0, -1, 0, 4, $01, OAM_XFLIP
dbsprite 1, -1, 0, 4, $00, OAM_XFLIP
.OAMData_bc:
dbsprite -3, -1, 0, 4, $00, $0
dbsprite -2, -1, 0, 4, $01, $0
dbsprite -1, -1, 0, 4, $02, $0
dbsprite 0, -1, 0, 4, $02, X_FLIP
dbsprite 1, -1, 0, 4, $01, X_FLIP
dbsprite 2, -1, 0, 4, $00, X_FLIP
dbsprite 0, -1, 0, 4, $02, OAM_XFLIP
dbsprite 1, -1, 0, 4, $01, OAM_XFLIP
dbsprite 2, -1, 0, 4, $00, OAM_XFLIP
.OAMData_c1:
dbsprite -2, -2, 0, 0, $00, $0
dbsprite -1, -2, 0, 0, $01, $0
dbsprite 0, -2, 0, 0, $02, $0
dbsprite 1, -2, 0, 0, $00, X_FLIP
dbsprite 1, -2, 0, 0, $00, OAM_XFLIP
dbsprite -2, -1, 0, 0, $03, $0
dbsprite -1, -1, 0, 0, $04, $0
dbsprite 0, -1, 0, 0, $04, X_FLIP
dbsprite 0, -1, 0, 0, $04, OAM_XFLIP
dbsprite 1, -1, 0, 0, $05, $0
dbsprite -2, 0, 0, 0, $05, X_FLIP | Y_FLIP
dbsprite -1, 0, 0, 0, $04, Y_FLIP
dbsprite 0, 0, 0, 0, $04, X_FLIP | Y_FLIP
dbsprite 1, 0, 0, 0, $03, X_FLIP | Y_FLIP
dbsprite -2, 1, 0, 0, $00, Y_FLIP
dbsprite -1, 1, 0, 0, $02, X_FLIP | Y_FLIP
dbsprite 0, 1, 0, 0, $01, X_FLIP | Y_FLIP
dbsprite 1, 1, 0, 0, $00, X_FLIP | Y_FLIP
dbsprite -2, 0, 0, 0, $05, OAM_XFLIP | OAM_YFLIP
dbsprite -1, 0, 0, 0, $04, OAM_YFLIP
dbsprite 0, 0, 0, 0, $04, OAM_XFLIP | OAM_YFLIP
dbsprite 1, 0, 0, 0, $03, OAM_XFLIP | OAM_YFLIP
dbsprite -2, 1, 0, 0, $00, OAM_YFLIP
dbsprite -1, 1, 0, 0, $02, OAM_XFLIP | OAM_YFLIP
dbsprite 0, 1, 0, 0, $01, OAM_XFLIP | OAM_YFLIP
dbsprite 1, 1, 0, 0, $00, OAM_XFLIP | OAM_YFLIP
.OAMData_c2:
dbsprite -2, -1, 0, 0, $00, $0
dbsprite -1, -1, 0, 0, $01, $0
dbsprite 0, -1, 0, 0, $00, X_FLIP | Y_FLIP
dbsprite 0, -1, 0, 0, $00, OAM_XFLIP | OAM_YFLIP
dbsprite -1, 0, 0, 0, $00, $0
dbsprite 0, 0, 0, 0, $01, $0
dbsprite 1, 0, 0, 0, $00, X_FLIP | Y_FLIP
dbsprite 1, 0, 0, 0, $00, OAM_XFLIP | OAM_YFLIP
.OAMData_c8:
dbsprite 1, -1, 4, 0, $00, $0
@ -1072,9 +1072,9 @@ BattleAnimOAMData:
.OAMData_ca:
dbsprite -1, -1, 0, 0, $00, $0
dbsprite 0, -1, 0, 0, $01, X_FLIP | Y_FLIP
dbsprite 0, -1, 0, 0, $01, OAM_XFLIP | OAM_YFLIP
dbsprite -1, 0, 0, 0, $01, $0
dbsprite 0, 0, 0, 0, $01, X_FLIP
dbsprite 0, 0, 0, 0, $01, OAM_XFLIP
.OAMData_cc:
dbsprite -13, -2, 4, 0, $00, $0

View File

@ -60,7 +60,7 @@ BattleAnimObjects:
; BATTLE_ANIM_OBJ_ICE_BEAM
battleanimobj RELATIVE_X, $90, BATTLE_ANIM_FRAMESET_ICE_BEAM, BATTLE_ANIM_FUNC_USER_TO_TARGET, PAL_BATTLE_OB_BLUE, BATTLE_ANIM_GFX_ICE
; BATTLE_ANIM_OBJ_RAZOR_LEAF
battleanimobj RELATIVE_X | X_FLIP, $78, BATTLE_ANIM_FRAMESET_RAZOR_LEAF_1, BATTLE_ANIM_FUNC_RAZOR_LEAF, PAL_BATTLE_OB_GREEN, BATTLE_ANIM_GFX_PLANT
battleanimobj RELATIVE_X | OAM_XFLIP, $78, BATTLE_ANIM_FRAMESET_RAZOR_LEAF_1, BATTLE_ANIM_FUNC_RAZOR_LEAF, PAL_BATTLE_OB_GREEN, BATTLE_ANIM_GFX_PLANT
; BATTLE_ANIM_OBJ_POKE_BALL
battleanimobj ABSOLUTE_X, $00, BATTLE_ANIM_FRAMESET_POKE_BALL_1, BATTLE_ANIM_FUNC_POKEBALL, PAL_BATTLE_OB_RED, BATTLE_ANIM_GFX_POKE_BALL
; BATTLE_ANIM_OBJ_POKE_BALL_BLOCKED
@ -92,15 +92,15 @@ BattleAnimObjects:
; BATTLE_ANIM_OBJ_SING
battleanimobj RELATIVE_X, $90, BATTLE_ANIM_FRAMESET_MUSIC_NOTE_1, BATTLE_ANIM_FUNC_SING, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_NOISE
; BATTLE_ANIM_OBJ_WATER_GUN
battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $80, BATTLE_ANIM_FRAMESET_WATER_GUN_1, BATTLE_ANIM_FUNC_WATER_GUN, PAL_BATTLE_OB_BLUE, BATTLE_ANIM_GFX_WATER
battleanimobj RELATIVE_X | OAM_XFLIP | OAM_YFLIP, $80, BATTLE_ANIM_FRAMESET_WATER_GUN_1, BATTLE_ANIM_FUNC_WATER_GUN, PAL_BATTLE_OB_BLUE, BATTLE_ANIM_GFX_WATER
; BATTLE_ANIM_OBJ_HYDRO_PUMP
battleanimobj RELATIVE_X, $b4, BATTLE_ANIM_FRAMESET_HYDRO_PUMP, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_BLUE, BATTLE_ANIM_GFX_WATER
; BATTLE_ANIM_OBJ_POWDER
battleanimobj RELATIVE_X, $40, BATTLE_ANIM_FRAMESET_POWDER, BATTLE_ANIM_FUNC_POWDER, PAL_BATTLE_OB_GREEN, BATTLE_ANIM_GFX_POWDER
; BATTLE_ANIM_OBJ_BEAM
battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $98, BATTLE_ANIM_FRAMESET_BEAM, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_YELLOW, BATTLE_ANIM_GFX_BEAM
battleanimobj RELATIVE_X | OAM_XFLIP | OAM_YFLIP, $98, BATTLE_ANIM_FRAMESET_BEAM, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_YELLOW, BATTLE_ANIM_GFX_BEAM
; BATTLE_ANIM_OBJ_BEAM_TIP
battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $98, BATTLE_ANIM_FRAMESET_BEAM_TIP, BATTLE_ANIM_FUNC_SHAKE, PAL_BATTLE_OB_YELLOW, BATTLE_ANIM_GFX_BEAM
battleanimobj RELATIVE_X | OAM_XFLIP | OAM_YFLIP, $98, BATTLE_ANIM_FRAMESET_BEAM_TIP, BATTLE_ANIM_FUNC_SHAKE, PAL_BATTLE_OB_YELLOW, BATTLE_ANIM_GFX_BEAM
; BATTLE_ANIM_OBJ_ICE_BUILDUP
battleanimobj RELATIVE_X, $b8, BATTLE_ANIM_FRAMESET_ICE_BUILDUP, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_BLUE, BATTLE_ANIM_GFX_ICE
; BATTLE_ANIM_OBJ_FROZEN
@ -110,81 +110,81 @@ BattleAnimObjects:
; BATTLE_ANIM_OBJ_RECOVER
battleanimobj RELATIVE_X, $90, BATTLE_ANIM_FRAMESET_SMALL_BUBBLE, BATTLE_ANIM_FUNC_RECOVER, PAL_BATTLE_OB_YELLOW, BATTLE_ANIM_GFX_BUBBLE
; BATTLE_ANIM_OBJ_THUNDER_CENTER
battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLE_ANIM_FRAMESET_THUNDER_CENTER, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_YELLOW, BATTLE_ANIM_GFX_LIGHTNING
battleanimobj RELATIVE_X | OAM_XFLIP, $b0, BATTLE_ANIM_FRAMESET_THUNDER_CENTER, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_YELLOW, BATTLE_ANIM_GFX_LIGHTNING
; BATTLE_ANIM_OBJ_THUNDER_LEFT
battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLE_ANIM_FRAMESET_THUNDER_LEFT, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_YELLOW, BATTLE_ANIM_GFX_LIGHTNING
battleanimobj RELATIVE_X | OAM_XFLIP, $b0, BATTLE_ANIM_FRAMESET_THUNDER_LEFT, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_YELLOW, BATTLE_ANIM_GFX_LIGHTNING
; BATTLE_ANIM_OBJ_THUNDER_RIGHT
battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLE_ANIM_FRAMESET_THUNDER_RIGHT, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_YELLOW, BATTLE_ANIM_GFX_LIGHTNING
battleanimobj RELATIVE_X | OAM_XFLIP, $b0, BATTLE_ANIM_FRAMESET_THUNDER_RIGHT, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_YELLOW, BATTLE_ANIM_GFX_LIGHTNING
; BATTLE_ANIM_OBJ_THUNDER_WAVE
battleanimobj RELATIVE_X | X_FLIP, $90, BATTLE_ANIM_FRAMESET_THUNDER_WAVE_DISABLE, BATTLE_ANIM_FUNC_THUNDER_WAVE, PAL_BATTLE_OB_YELLOW, BATTLE_ANIM_GFX_LIGHTNING
battleanimobj RELATIVE_X | OAM_XFLIP, $90, BATTLE_ANIM_FRAMESET_THUNDER_WAVE_DISABLE, BATTLE_ANIM_FUNC_THUNDER_WAVE, PAL_BATTLE_OB_YELLOW, BATTLE_ANIM_GFX_LIGHTNING
; BATTLE_ANIM_OBJ_THUNDERBOLT_SPARKS
battleanimobj RELATIVE_X | X_FLIP, $90, BATTLE_ANIM_FRAMESET_THUNDERBOLT_SPARKS, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_YELLOW, BATTLE_ANIM_GFX_LIGHTNING
battleanimobj RELATIVE_X | OAM_XFLIP, $90, BATTLE_ANIM_FRAMESET_THUNDERBOLT_SPARKS, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_YELLOW, BATTLE_ANIM_GFX_LIGHTNING
; BATTLE_ANIM_OBJ_THUNDERBOLT_CORE
battleanimobj RELATIVE_X | X_FLIP, $90, BATTLE_ANIM_FRAMESET_THUNDERBOLT_CORE, BATTLE_ANIM_FUNC_MOVE_IN_CIRCLE, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_EXPLOSION
battleanimobj RELATIVE_X | OAM_XFLIP, $90, BATTLE_ANIM_FRAMESET_THUNDERBOLT_CORE, BATTLE_ANIM_FUNC_MOVE_IN_CIRCLE, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_EXPLOSION
; BATTLE_ANIM_OBJ_THUNDERSHOCK_SPARKS
battleanimobj RELATIVE_X | X_FLIP, $90, BATTLE_ANIM_FRAMESET_THUNDERSHOCK_SPARKS, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_YELLOW, BATTLE_ANIM_GFX_LIGHTNING
battleanimobj RELATIVE_X | OAM_XFLIP, $90, BATTLE_ANIM_FRAMESET_THUNDERSHOCK_SPARKS, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_YELLOW, BATTLE_ANIM_GFX_LIGHTNING
; BATTLE_ANIM_OBJ_THUNDERSHOCK_CORE
battleanimobj RELATIVE_X | X_FLIP, $90, BATTLE_ANIM_FRAMESET_THUNDERSHOCK_CORE, BATTLE_ANIM_FUNC_MOVE_IN_CIRCLE, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_EXPLOSION
battleanimobj RELATIVE_X | OAM_XFLIP, $90, BATTLE_ANIM_FRAMESET_THUNDERSHOCK_CORE, BATTLE_ANIM_FUNC_MOVE_IN_CIRCLE, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_EXPLOSION
; BATTLE_ANIM_OBJ_CLAMP
battleanimobj RELATIVE_X | X_FLIP, $90, BATTLE_ANIM_FRAMESET_CLAMP, BATTLE_ANIM_FUNC_CLAMP_ENCORE, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_CUT
battleanimobj RELATIVE_X | OAM_XFLIP, $90, BATTLE_ANIM_FRAMESET_CLAMP, BATTLE_ANIM_FUNC_CLAMP_ENCORE, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_CUT
; BATTLE_ANIM_OBJ_BITE
battleanimobj RELATIVE_X, $90, BATTLE_ANIM_FRAMESET_BITE_1, BATTLE_ANIM_FUNC_BITE, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_CUT
; BATTLE_ANIM_OBJ_CUT_DOWN_LEFT
battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLE_ANIM_FRAMESET_CUT_DOWN_LEFT, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_CUT
battleanimobj RELATIVE_X | OAM_XFLIP, $ff, BATTLE_ANIM_FRAMESET_CUT_DOWN_LEFT, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_CUT
; BATTLE_ANIM_OBJ_CUT_DOWN_RIGHT
battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLE_ANIM_FRAMESET_CUT_DOWN_RIGHT, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_CUT
battleanimobj RELATIVE_X | OAM_XFLIP, $ff, BATTLE_ANIM_FRAMESET_CUT_DOWN_RIGHT, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_CUT
; BATTLE_ANIM_OBJ_CUT_UP_RIGHT
battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLE_ANIM_FRAMESET_CUT_UP_RIGHT, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_CUT
battleanimobj RELATIVE_X | OAM_XFLIP, $ff, BATTLE_ANIM_FRAMESET_CUT_UP_RIGHT, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_CUT
; BATTLE_ANIM_OBJ_CUT_LONG_DOWN_LEFT
battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLE_ANIM_FRAMESET_CUT_LONG_DOWN_LEFT, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_CUT
battleanimobj RELATIVE_X | OAM_XFLIP, $ff, BATTLE_ANIM_FRAMESET_CUT_LONG_DOWN_LEFT, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_CUT
; BATTLE_ANIM_OBJ_CUT_LONG_DOWN_RIGHT
battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLE_ANIM_FRAMESET_CUT_LONG_DOWN_RIGHT, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_CUT
battleanimobj RELATIVE_X | OAM_XFLIP, $ff, BATTLE_ANIM_FRAMESET_CUT_LONG_DOWN_RIGHT, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_CUT
; BATTLE_ANIM_OBJ_SOLAR_BEAM_CHARGE
battleanimobj RELATIVE_X, $88, BATTLE_ANIM_FRAMESET_CHARGE_ORB_1, BATTLE_ANIM_FUNC_SOLAR_BEAM, PAL_BATTLE_OB_GREEN, BATTLE_ANIM_GFX_CHARGE
; BATTLE_ANIM_OBJ_ABSORB_CENTER
battleanimobj RELATIVE_X, $88, BATTLE_ANIM_FRAMESET_ABSORB_CENTER, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_GREEN, BATTLE_ANIM_GFX_CHARGE
; BATTLE_ANIM_OBJ_GUST
battleanimobj RELATIVE_X | X_FLIP, $b8, BATTLE_ANIM_FRAMESET_GUST, BATTLE_ANIM_FUNC_GUST, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_WIND
battleanimobj RELATIVE_X | OAM_XFLIP, $b8, BATTLE_ANIM_FRAMESET_GUST, BATTLE_ANIM_FUNC_GUST, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_WIND
; BATTLE_ANIM_OBJ_VINE_WHIP1
battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLE_ANIM_FRAMESET_VINE_WHIP_1, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_WHIP
battleanimobj RELATIVE_X | OAM_XFLIP, $ff, BATTLE_ANIM_FRAMESET_VINE_WHIP_1, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_WHIP
; BATTLE_ANIM_OBJ_VINE_WHIP2
battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLE_ANIM_FRAMESET_VINE_WHIP_2, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_WHIP
battleanimobj RELATIVE_X | OAM_XFLIP, $ff, BATTLE_ANIM_FRAMESET_VINE_WHIP_2, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_WHIP
; BATTLE_ANIM_OBJ_RAZOR_WIND1
battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLE_ANIM_FRAMESET_RAZOR_WIND_1, BATTLE_ANIM_FUNC_RAZOR_WIND, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_WHIP
battleanimobj RELATIVE_X | OAM_XFLIP, $ff, BATTLE_ANIM_FRAMESET_RAZOR_WIND_1, BATTLE_ANIM_FUNC_RAZOR_WIND, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_WHIP
; BATTLE_ANIM_OBJ_RAZOR_WIND2
battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLE_ANIM_FRAMESET_RAZOR_WIND_2, BATTLE_ANIM_FUNC_RAZOR_WIND, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_WHIP
battleanimobj RELATIVE_X | OAM_XFLIP, $ff, BATTLE_ANIM_FRAMESET_RAZOR_WIND_2, BATTLE_ANIM_FUNC_RAZOR_WIND, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_WHIP
; BATTLE_ANIM_OBJ_SONICBOOM_JP
battleanimobj RELATIVE_X | X_FLIP, $98, BATTLE_ANIM_FRAMESET_SONICBOOM_JP, BATTLE_ANIM_FUNC_USER_TO_TARGET, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_WHIP
battleanimobj RELATIVE_X | OAM_XFLIP, $98, BATTLE_ANIM_FRAMESET_SONICBOOM_JP, BATTLE_ANIM_FUNC_USER_TO_TARGET, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_WHIP
; BATTLE_ANIM_OBJ_WARP
battleanimobj RELATIVE_X | X_FLIP, $80, BATTLE_ANIM_FRAMESET_WARP, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_YELLOW, BATTLE_ANIM_GFX_SPEED
battleanimobj RELATIVE_X | OAM_XFLIP, $80, BATTLE_ANIM_FRAMESET_WARP, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_YELLOW, BATTLE_ANIM_GFX_SPEED
; BATTLE_ANIM_OBJ_ABSORB
battleanimobj RELATIVE_X, $88, BATTLE_ANIM_FRAMESET_CHARGE_ORB_2, BATTLE_ANIM_FUNC_ABSORB, PAL_BATTLE_OB_GREEN, BATTLE_ANIM_GFX_CHARGE
; BATTLE_ANIM_OBJ_EGG
battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLE_ANIM_FRAMESET_EGG, BATTLE_ANIM_FUNC_EGG, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_EGG
battleanimobj RELATIVE_X | OAM_XFLIP, $b0, BATTLE_ANIM_FRAMESET_EGG, BATTLE_ANIM_FUNC_EGG, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_EGG
; BATTLE_ANIM_OBJ_FOCUS
battleanimobj RELATIVE_X, $b0, BATTLE_ANIM_FRAMESET_FOCUS, BATTLE_ANIM_FUNC_MOVE_UP, PAL_BATTLE_OB_YELLOW, BATTLE_ANIM_GFX_SPEED
; BATTLE_ANIM_OBJ_BIND1
battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLE_ANIM_FRAMESET_BIND_1, BATTLE_ANIM_FUNC_WRAP, PAL_BATTLE_OB_GREEN, BATTLE_ANIM_GFX_ROPE
battleanimobj RELATIVE_X | OAM_XFLIP, $ff, BATTLE_ANIM_FRAMESET_BIND_1, BATTLE_ANIM_FUNC_WRAP, PAL_BATTLE_OB_GREEN, BATTLE_ANIM_GFX_ROPE
; BATTLE_ANIM_OBJ_BIND2
battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLE_ANIM_FRAMESET_BIND_3, BATTLE_ANIM_FUNC_WRAP, PAL_BATTLE_OB_GREEN, BATTLE_ANIM_GFX_ROPE
battleanimobj RELATIVE_X | OAM_XFLIP, $ff, BATTLE_ANIM_FRAMESET_BIND_3, BATTLE_ANIM_FUNC_WRAP, PAL_BATTLE_OB_GREEN, BATTLE_ANIM_GFX_ROPE
; BATTLE_ANIM_OBJ_LEECH_SEED
battleanimobj RELATIVE_X | X_FLIP, $68, BATTLE_ANIM_FRAMESET_LEECH_SEED_1, BATTLE_ANIM_FUNC_LEECH_SEED, PAL_BATTLE_OB_GREEN, BATTLE_ANIM_GFX_PLANT
battleanimobj RELATIVE_X | OAM_XFLIP, $68, BATTLE_ANIM_FRAMESET_LEECH_SEED_1, BATTLE_ANIM_FUNC_LEECH_SEED, PAL_BATTLE_OB_GREEN, BATTLE_ANIM_GFX_PLANT
; BATTLE_ANIM_OBJ_SOUND
battleanimobj RELATIVE_X | X_FLIP, $90, BATTLE_ANIM_FRAMESET_SOUND_1, BATTLE_ANIM_FUNC_SOUND, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_NOISE
battleanimobj RELATIVE_X | OAM_XFLIP, $90, BATTLE_ANIM_FRAMESET_SOUND_1, BATTLE_ANIM_FUNC_SOUND, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_NOISE
; BATTLE_ANIM_OBJ_WAVE
battleanimobj RELATIVE_X | X_FLIP, $90, BATTLE_ANIM_FRAMESET_WAVE, BATTLE_ANIM_FUNC_USER_TO_TARGET_DISAPPEAR, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_PSYCHIC
battleanimobj RELATIVE_X | OAM_XFLIP, $90, BATTLE_ANIM_FRAMESET_WAVE, BATTLE_ANIM_FUNC_USER_TO_TARGET_DISAPPEAR, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_PSYCHIC
; BATTLE_ANIM_OBJ_CONFUSE_RAY
battleanimobj RELATIVE_X, $90, BATTLE_ANIM_FRAMESET_CONFUSE_RAY_1, BATTLE_ANIM_FUNC_CONFUSE_RAY, PAL_BATTLE_OB_YELLOW, BATTLE_ANIM_GFX_SPEED
; BATTLE_ANIM_OBJ_LEER
battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $88, BATTLE_ANIM_FRAMESET_LEER, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_YELLOW, BATTLE_ANIM_GFX_BEAM
battleanimobj RELATIVE_X | OAM_XFLIP | OAM_YFLIP, $88, BATTLE_ANIM_FRAMESET_LEER, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_YELLOW, BATTLE_ANIM_GFX_BEAM
; BATTLE_ANIM_OBJ_LEER_TIP
battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $88, BATTLE_ANIM_FRAMESET_BEAM_TIP, BATTLE_ANIM_FUNC_SHAKE, PAL_BATTLE_OB_YELLOW, BATTLE_ANIM_GFX_BEAM
battleanimobj RELATIVE_X | OAM_XFLIP | OAM_YFLIP, $88, BATTLE_ANIM_FRAMESET_BEAM_TIP, BATTLE_ANIM_FUNC_SHAKE, PAL_BATTLE_OB_YELLOW, BATTLE_ANIM_GFX_BEAM
; BATTLE_ANIM_OBJ_SCREEN
battleanimobj RELATIVE_X | X_FLIP, $88, BATTLE_ANIM_FRAMESET_REFLECT, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_YELLOW, BATTLE_ANIM_GFX_REFLECT
battleanimobj RELATIVE_X | OAM_XFLIP, $88, BATTLE_ANIM_FRAMESET_REFLECT, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_YELLOW, BATTLE_ANIM_GFX_REFLECT
; BATTLE_ANIM_OBJ_HARDEN
battleanimobj RELATIVE_X | X_FLIP, $80, BATTLE_ANIM_FRAMESET_REFLECT, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_REFLECT
battleanimobj RELATIVE_X | OAM_XFLIP, $80, BATTLE_ANIM_FRAMESET_REFLECT, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_REFLECT
; BATTLE_ANIM_OBJ_CHICK
battleanimobj RELATIVE_X | X_FLIP, $50, BATTLE_ANIM_FRAMESET_CHICK_1, BATTLE_ANIM_FUNC_DIZZY, PAL_BATTLE_OB_YELLOW, BATTLE_ANIM_GFX_STATUS
battleanimobj RELATIVE_X | OAM_XFLIP, $50, BATTLE_ANIM_FRAMESET_CHICK_1, BATTLE_ANIM_FUNC_DIZZY, PAL_BATTLE_OB_YELLOW, BATTLE_ANIM_GFX_STATUS
; BATTLE_ANIM_OBJ_AMNESIA
battleanimobj RELATIVE_X, $80, BATTLE_ANIM_FRAMESET_AMNESIA_1, BATTLE_ANIM_FUNC_AMNESIA, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_STATUS
; BATTLE_ANIM_OBJ_ASLEEP
@ -192,27 +192,27 @@ BattleAnimObjects:
; BATTLE_ANIM_OBJ_SKULL_CROSSBONE
battleanimobj RELATIVE_X, $50, BATTLE_ANIM_FRAMESET_SKULL_CROSSBONE, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_POISON
; BATTLE_ANIM_OBJ_DIG_SAND
battleanimobj RELATIVE_X | X_FLIP, $a8, BATTLE_ANIM_FRAMESET_DIG_SAND, BATTLE_ANIM_FUNC_DIG, PAL_BATTLE_OB_BROWN, BATTLE_ANIM_GFX_SAND
battleanimobj RELATIVE_X | OAM_XFLIP, $a8, BATTLE_ANIM_FRAMESET_DIG_SAND, BATTLE_ANIM_FUNC_DIG, PAL_BATTLE_OB_BROWN, BATTLE_ANIM_GFX_SAND
; BATTLE_ANIM_OBJ_DIG_PILE
battleanimobj RELATIVE_X | X_FLIP, $a8, BATTLE_ANIM_FRAMESET_DIG_PILE, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_BROWN, BATTLE_ANIM_GFX_SAND
battleanimobj RELATIVE_X | OAM_XFLIP, $a8, BATTLE_ANIM_FRAMESET_DIG_PILE, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_BROWN, BATTLE_ANIM_GFX_SAND
; BATTLE_ANIM_OBJ_SAND
battleanimobj RELATIVE_X | X_FLIP, $90, BATTLE_ANIM_FRAMESET_SAND, BATTLE_ANIM_FUNC_USER_TO_TARGET, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_SAND
battleanimobj RELATIVE_X | OAM_XFLIP, $90, BATTLE_ANIM_FRAMESET_SAND, BATTLE_ANIM_FUNC_USER_TO_TARGET, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_SAND
; BATTLE_ANIM_OBJ_PARALYZED
battleanimobj RELATIVE_X | X_FLIP, $90, BATTLE_ANIM_FRAMESET_PARALYZED, BATTLE_ANIM_FUNC_PARALYZED, PAL_BATTLE_OB_YELLOW, BATTLE_ANIM_GFX_STATUS
battleanimobj RELATIVE_X | OAM_XFLIP, $90, BATTLE_ANIM_FRAMESET_PARALYZED, BATTLE_ANIM_FUNC_PARALYZED, PAL_BATTLE_OB_YELLOW, BATTLE_ANIM_GFX_STATUS
; BATTLE_ANIM_OBJ_STRING_SHOT
battleanimobj RELATIVE_X | X_FLIP, $90, BATTLE_ANIM_FRAMESET_STRING_SHOT_1, BATTLE_ANIM_FUNC_STRING, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_WEB
battleanimobj RELATIVE_X | OAM_XFLIP, $90, BATTLE_ANIM_FRAMESET_STRING_SHOT_1, BATTLE_ANIM_FUNC_STRING, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_WEB
; BATTLE_ANIM_OBJ_HAZE
battleanimobj ABSOLUTE_X, $00, BATTLE_ANIM_FRAMESET_HAZE, BATTLE_ANIM_FUNC_SPIRAL_DESCENT, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_HAZE
; BATTLE_ANIM_OBJ_MIST
battleanimobj RELATIVE_X | X_FLIP, $48, BATTLE_ANIM_FRAMESET_MIST, BATTLE_ANIM_FUNC_SPIRAL_DESCENT, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_HAZE
battleanimobj RELATIVE_X | OAM_XFLIP, $48, BATTLE_ANIM_FRAMESET_MIST, BATTLE_ANIM_FUNC_SPIRAL_DESCENT, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_HAZE
; BATTLE_ANIM_OBJ_SMOG
battleanimobj RELATIVE_X | X_FLIP, $48, BATTLE_ANIM_FRAMESET_HAZE, BATTLE_ANIM_FUNC_SPIRAL_DESCENT, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_HAZE
battleanimobj RELATIVE_X | OAM_XFLIP, $48, BATTLE_ANIM_FRAMESET_HAZE, BATTLE_ANIM_FUNC_SPIRAL_DESCENT, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_HAZE
; BATTLE_ANIM_OBJ_POISON_GAS
battleanimobj RELATIVE_X | X_FLIP, $78, BATTLE_ANIM_FRAMESET_HAZE, BATTLE_ANIM_FUNC_POISON_GAS, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_HAZE
battleanimobj RELATIVE_X | OAM_XFLIP, $78, BATTLE_ANIM_FRAMESET_HAZE, BATTLE_ANIM_FUNC_POISON_GAS, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_HAZE
; BATTLE_ANIM_OBJ_HORN
battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $90, BATTLE_ANIM_FRAMESET_HORN, BATTLE_ANIM_FUNC_HORN, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_HORN
battleanimobj RELATIVE_X | OAM_XFLIP | OAM_YFLIP, $90, BATTLE_ANIM_FRAMESET_HORN, BATTLE_ANIM_FUNC_HORN, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_HORN
; BATTLE_ANIM_OBJ_NEEDLE
battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $90, BATTLE_ANIM_FRAMESET_NEEDLE, BATTLE_ANIM_FUNC_NEEDLE, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_HORN
battleanimobj RELATIVE_X | OAM_XFLIP | OAM_YFLIP, $90, BATTLE_ANIM_FRAMESET_NEEDLE, BATTLE_ANIM_FUNC_NEEDLE, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_HORN
; BATTLE_ANIM_OBJ_PETAL_DANCE
battleanimobj RELATIVE_X, $48, BATTLE_ANIM_FRAMESET_FLOWER, BATTLE_ANIM_FUNC_PETAL_DANCE, PAL_BATTLE_OB_RED, BATTLE_ANIM_GFX_FLOWER
; BATTLE_ANIM_OBJ_SLUDGE_BOMB
@ -220,7 +220,7 @@ BattleAnimObjects:
; BATTLE_ANIM_OBJ_PAY_DAY
battleanimobj RELATIVE_X, $ff, BATTLE_ANIM_FRAMESET_PAY_DAY, BATTLE_ANIM_FUNC_THIEF_PAYDAY, PAL_BATTLE_OB_BROWN, BATTLE_ANIM_GFX_STATUS
; BATTLE_ANIM_OBJ_SONICBOOM_JP_UNUSED
battleanimobj RELATIVE_X | X_FLIP, $90, BATTLE_ANIM_FRAMESET_SONICBOOM_JP, BATTLE_ANIM_FUNC_USER_TO_TARGET_DISAPPEAR, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_WHIP
battleanimobj RELATIVE_X | OAM_XFLIP, $90, BATTLE_ANIM_FRAMESET_SONICBOOM_JP, BATTLE_ANIM_FUNC_USER_TO_TARGET_DISAPPEAR, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_WHIP
; BATTLE_ANIM_OBJ_MIMIC
battleanimobj RELATIVE_X, $80, BATTLE_ANIM_FRAMESET_CIRCLING_SPARKLE, BATTLE_ANIM_FUNC_ABSORB_CIRCLE, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_SPEED
; BATTLE_ANIM_OBJ_ATTRACT
@ -234,17 +234,17 @@ BattleAnimObjects:
; BATTLE_ANIM_OBJ_SWIFT
battleanimobj RELATIVE_X, $80, BATTLE_ANIM_FRAMESET_STAR, BATTLE_ANIM_FUNC_USER_TO_TARGET_SPIN, PAL_BATTLE_OB_YELLOW, BATTLE_ANIM_GFX_OBJECTS
; BATTLE_ANIM_OBJ_KINESIS
battleanimobj RELATIVE_X | X_FLIP, $90, BATTLE_ANIM_FRAMESET_SPOON, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_MISC
battleanimobj RELATIVE_X | OAM_XFLIP, $90, BATTLE_ANIM_FRAMESET_SPOON, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_MISC
; BATTLE_ANIM_OBJ_FLASH
battleanimobj RELATIVE_X, $ff, BATTLE_ANIM_FRAMESET_SPARKLE, BATTLE_ANIM_FUNC_SHINY, PAL_BATTLE_OB_YELLOW, BATTLE_ANIM_GFX_SPEED
; BATTLE_ANIM_OBJ_SHINY
battleanimobj RELATIVE_X, $88, BATTLE_ANIM_FRAMESET_SPARKLE, BATTLE_ANIM_FUNC_SHINY, PAL_BATTLE_OB_YELLOW, BATTLE_ANIM_GFX_SPEED
; BATTLE_ANIM_OBJ_SKY_ATTACK
battleanimobj RELATIVE_X | X_FLIP, $88, BATTLE_ANIM_FRAMESET_SKY_ATTACK, BATTLE_ANIM_FUNC_SKY_ATTACK, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_SKY_ATTACK
battleanimobj RELATIVE_X | OAM_XFLIP, $88, BATTLE_ANIM_FRAMESET_SKY_ATTACK, BATTLE_ANIM_FUNC_SKY_ATTACK, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_SKY_ATTACK
; BATTLE_ANIM_OBJ_LICK
battleanimobj RELATIVE_X | X_FLIP, $98, BATTLE_ANIM_FRAMESET_LICK, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_WATER
battleanimobj RELATIVE_X | OAM_XFLIP, $98, BATTLE_ANIM_FRAMESET_LICK, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_WATER
; BATTLE_ANIM_OBJ_WITHDRAW
battleanimobj RELATIVE_X | X_FLIP, $80, BATTLE_ANIM_FRAMESET_WITHDRAW_SHELL, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_REFLECT
battleanimobj RELATIVE_X | OAM_XFLIP, $80, BATTLE_ANIM_FRAMESET_WITHDRAW_SHELL, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_REFLECT
; BATTLE_ANIM_OBJ_DRAIN
battleanimobj RELATIVE_X, $80, BATTLE_ANIM_FRAMESET_SMALL_BUBBLE, BATTLE_ANIM_FUNC_ABSORB_CIRCLE, PAL_BATTLE_OB_BLUE, BATTLE_ANIM_GFX_BUBBLE
; BATTLE_ANIM_OBJ_GROWTH
@ -252,11 +252,11 @@ BattleAnimObjects:
; BATTLE_ANIM_OBJ_CONVERSION2
battleanimobj RELATIVE_X, $80, BATTLE_ANIM_FRAMESET_CONVERSION, BATTLE_ANIM_FUNC_ABSORB_CIRCLE, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_EXPLOSION
; BATTLE_ANIM_OBJ_SMOKE
battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLE_ANIM_FRAMESET_HAZE, BATTLE_ANIM_FUNC_SMOKE_FLAME_WHEEL, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_HAZE
battleanimobj RELATIVE_X | OAM_XFLIP, $a0, BATTLE_ANIM_FRAMESET_HAZE, BATTLE_ANIM_FUNC_SMOKE_FLAME_WHEEL, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_HAZE
; BATTLE_ANIM_OBJ_SMOKESCREEN
battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLE_ANIM_FRAMESET_BARRAGE_BALL, BATTLE_ANIM_FUNC_PRESENT_SMOKESCREEN, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_EGG
battleanimobj RELATIVE_X | OAM_XFLIP, $a0, BATTLE_ANIM_FRAMESET_BARRAGE_BALL, BATTLE_ANIM_FUNC_PRESENT_SMOKESCREEN, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_EGG
; BATTLE_ANIM_OBJ_SWORDS_DANCE
battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLE_ANIM_FRAMESET_SWORD, BATTLE_ANIM_FUNC_GROWTH_SWORDS_DANCE, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_WHIP
battleanimobj RELATIVE_X | OAM_XFLIP, $b0, BATTLE_ANIM_FRAMESET_SWORD, BATTLE_ANIM_FUNC_GROWTH_SWORDS_DANCE, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_WHIP
; BATTLE_ANIM_OBJ_SPEED_LINE
battleanimobj RELATIVE_X, $88, BATTLE_ANIM_FRAMESET_SPEED_LINE_1, BATTLE_ANIM_FUNC_SPEED_LINE, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_SPEED
; BATTLE_ANIM_OBJ_SHARPEN
@ -268,9 +268,9 @@ BattleAnimObjects:
; BATTLE_ANIM_OBJ_METRONOME_SPARKLE
battleanimobj RELATIVE_X, $80, BATTLE_ANIM_FRAMESET_CIRCLING_SPARKLE, BATTLE_ANIM_FUNC_METRONOME_SPARKLE_SKETCH, PAL_BATTLE_OB_YELLOW, BATTLE_ANIM_GFX_SPEED
; BATTLE_ANIM_OBJ_DISABLE
battleanimobj RELATIVE_X | X_FLIP, $90, BATTLE_ANIM_FRAMESET_THUNDER_WAVE_DISABLE, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_YELLOW, BATTLE_ANIM_GFX_LIGHTNING
battleanimobj RELATIVE_X | OAM_XFLIP, $90, BATTLE_ANIM_FRAMESET_THUNDER_WAVE_DISABLE, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_YELLOW, BATTLE_ANIM_GFX_LIGHTNING
; BATTLE_ANIM_OBJ_AGILITY
battleanimobj RELATIVE_X | X_FLIP | PRIORITY, $88, BATTLE_ANIM_FRAMESET_AGILITY, BATTLE_ANIM_FUNC_AGILITY, PAL_BATTLE_OB_BLUE, BATTLE_ANIM_GFX_WIND
battleanimobj RELATIVE_X | OAM_XFLIP | OAM_PRIO, $88, BATTLE_ANIM_FRAMESET_AGILITY, BATTLE_ANIM_FUNC_AGILITY, PAL_BATTLE_OB_BLUE, BATTLE_ANIM_GFX_WIND
; BATTLE_ANIM_OBJ_HEART
battleanimobj RELATIVE_X, $80, BATTLE_ANIM_FRAMESET_HEART, BATTLE_ANIM_FUNC_FLOAT_UP, PAL_BATTLE_OB_RED, BATTLE_ANIM_GFX_OBJECTS
; BATTLE_ANIM_OBJ_FLAME_WHEEL
@ -278,33 +278,33 @@ BattleAnimObjects:
; BATTLE_ANIM_OBJ_SACRED_FIRE
battleanimobj RELATIVE_X, $a8, BATTLE_ANIM_FRAMESET_FLAMETHROWER, BATTLE_ANIM_FUNC_SACRED_FIRE, PAL_BATTLE_OB_RED, BATTLE_ANIM_GFX_FIRE
; BATTLE_ANIM_OBJ_COTTON_SPORE
battleanimobj RELATIVE_X | X_FLIP, $68, BATTLE_ANIM_FRAMESET_COTTON, BATTLE_ANIM_FUNC_SPIRAL_DESCENT, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_MISC
battleanimobj RELATIVE_X | OAM_XFLIP, $68, BATTLE_ANIM_FRAMESET_COTTON, BATTLE_ANIM_FUNC_SPIRAL_DESCENT, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_MISC
; BATTLE_ANIM_OBJ_MILK_DRINK
battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLE_ANIM_FRAMESET_MILK_BOTTLE, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_MISC
battleanimobj RELATIVE_X | OAM_XFLIP, $b0, BATTLE_ANIM_FRAMESET_MILK_BOTTLE, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_MISC
; BATTLE_ANIM_OBJ_ANGER
battleanimobj RELATIVE_X | X_FLIP, $80, BATTLE_ANIM_FRAMESET_ANGER_VEIN, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_MISC
battleanimobj RELATIVE_X | OAM_XFLIP, $80, BATTLE_ANIM_FRAMESET_ANGER_VEIN, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_MISC
; BATTLE_ANIM_OBJ_HEAL_BELL
battleanimobj RELATIVE_X | X_FLIP, $50, BATTLE_ANIM_FRAMESET_HEAL_BELL, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_YELLOW, BATTLE_ANIM_GFX_MISC
battleanimobj RELATIVE_X | OAM_XFLIP, $50, BATTLE_ANIM_FRAMESET_HEAL_BELL, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_YELLOW, BATTLE_ANIM_GFX_MISC
; BATTLE_ANIM_OBJ_HEAL_BELL_NOTE
battleanimobj RELATIVE_X, $40, BATTLE_ANIM_FRAMESET_MUSIC_NOTE_1, BATTLE_ANIM_FUNC_HEAL_BELL_NOTES, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_NOISE
; BATTLE_ANIM_OBJ_BATON_PASS
battleanimobj RELATIVE_X | X_FLIP, $a8, BATTLE_ANIM_FRAMESET_BATON_PASS, BATTLE_ANIM_FUNC_BATON_PASS, PAL_BATTLE_OB_RED, BATTLE_ANIM_GFX_MISC
battleanimobj RELATIVE_X | OAM_XFLIP, $a8, BATTLE_ANIM_FRAMESET_BATON_PASS, BATTLE_ANIM_FUNC_BATON_PASS, PAL_BATTLE_OB_RED, BATTLE_ANIM_GFX_MISC
; BATTLE_ANIM_OBJ_LOCK_ON
battleanimobj RELATIVE_X | X_FLIP, $88, BATTLE_ANIM_FRAMESET_LOCK_ON_1, BATTLE_ANIM_FUNC_LOCK_ON_MIND_READER, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_MISC
battleanimobj RELATIVE_X | OAM_XFLIP, $88, BATTLE_ANIM_FRAMESET_LOCK_ON_1, BATTLE_ANIM_FUNC_LOCK_ON_MIND_READER, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_MISC
; BATTLE_ANIM_OBJ_MIND_READER
battleanimobj RELATIVE_X | X_FLIP, $88, BATTLE_ANIM_FRAMESET_MIND_READER_1, BATTLE_ANIM_FUNC_LOCK_ON_MIND_READER, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_MISC
battleanimobj RELATIVE_X | OAM_XFLIP, $88, BATTLE_ANIM_FRAMESET_MIND_READER_1, BATTLE_ANIM_FUNC_LOCK_ON_MIND_READER, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_MISC
; BATTLE_ANIM_OBJ_SAFEGUARD
battleanimobj RELATIVE_X | X_FLIP, $90, BATTLE_ANIM_FRAMESET_SAFEGUARD, BATTLE_ANIM_FUNC_SAFEGUARD_PROTECT, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_MISC
battleanimobj RELATIVE_X | OAM_XFLIP, $90, BATTLE_ANIM_FRAMESET_SAFEGUARD, BATTLE_ANIM_FUNC_SAFEGUARD_PROTECT, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_MISC
; BATTLE_ANIM_OBJ_PROTECT
battleanimobj RELATIVE_X | X_FLIP, $90, BATTLE_ANIM_FRAMESET_STAR, BATTLE_ANIM_FUNC_SAFEGUARD_PROTECT, PAL_BATTLE_OB_YELLOW, BATTLE_ANIM_GFX_OBJECTS
battleanimobj RELATIVE_X | OAM_XFLIP, $90, BATTLE_ANIM_FRAMESET_STAR, BATTLE_ANIM_FUNC_SAFEGUARD_PROTECT, PAL_BATTLE_OB_YELLOW, BATTLE_ANIM_GFX_OBJECTS
; BATTLE_ANIM_OBJ_THIEF
battleanimobj RELATIVE_X, $ff, BATTLE_ANIM_FRAMESET_ITEM_BAG, BATTLE_ANIM_FUNC_THIEF_PAYDAY, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_STATUS
; BATTLE_ANIM_OBJ_OCTAZOOKA
battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLE_ANIM_FRAMESET_BARRAGE_BALL, BATTLE_ANIM_FUNC_USER_TO_TARGET_DISAPPEAR, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_EGG
battleanimobj RELATIVE_X | OAM_XFLIP, $a0, BATTLE_ANIM_FRAMESET_BARRAGE_BALL, BATTLE_ANIM_FUNC_USER_TO_TARGET_DISAPPEAR, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_EGG
; BATTLE_ANIM_OBJ_PRESENT
battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLE_ANIM_FRAMESET_ITEM_BAG, BATTLE_ANIM_FUNC_PRESENT_SMOKESCREEN, PAL_BATTLE_OB_RED, BATTLE_ANIM_GFX_STATUS
battleanimobj RELATIVE_X | OAM_XFLIP, $a0, BATTLE_ANIM_FRAMESET_ITEM_BAG, BATTLE_ANIM_FUNC_PRESENT_SMOKESCREEN, PAL_BATTLE_OB_RED, BATTLE_ANIM_GFX_STATUS
; BATTLE_ANIM_OBJ_SPIKES
battleanimobj RELATIVE_X | X_FLIP, $70, BATTLE_ANIM_FRAMESET_SPIKE, BATTLE_ANIM_FUNC_SPIKES, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_MISC
battleanimobj RELATIVE_X | OAM_XFLIP, $70, BATTLE_ANIM_FRAMESET_SPIKE, BATTLE_ANIM_FUNC_SPIKES, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_MISC
; BATTLE_ANIM_OBJ_POWDER_SNOW
battleanimobj RELATIVE_X, $90, BATTLE_ANIM_FRAMESET_POWDER_SNOW, BATTLE_ANIM_FUNC_USER_TO_TARGET_SPIN, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_ICE
; BATTLE_ANIM_OBJ_DRAGONBREATH
@ -314,25 +314,25 @@ BattleAnimObjects:
; BATTLE_ANIM_OBJ_SPIDER_WEB
battleanimobj RELATIVE_X, $90, BATTLE_ANIM_FRAMESET_SPIDER_WEB, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_WEB
; BATTLE_ANIM_OBJ_CAKE_UNUSED
battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLE_ANIM_FRAMESET_UNUSED_CAKE, BATTLE_ANIM_FUNC_PRESENT_SMOKESCREEN, PAL_BATTLE_OB_RED, BATTLE_ANIM_GFX_OBJECTS
battleanimobj RELATIVE_X | OAM_XFLIP, $a0, BATTLE_ANIM_FRAMESET_UNUSED_CAKE, BATTLE_ANIM_FUNC_PRESENT_SMOKESCREEN, PAL_BATTLE_OB_RED, BATTLE_ANIM_GFX_OBJECTS
; BATTLE_ANIM_OBJ_NIGHTMARE
battleanimobj RELATIVE_X | X_FLIP, $80, BATTLE_ANIM_FRAMESET_IMP, BATTLE_ANIM_FUNC_DIZZY, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_ANGELS
battleanimobj RELATIVE_X | OAM_XFLIP, $80, BATTLE_ANIM_FRAMESET_IMP, BATTLE_ANIM_FUNC_DIZZY, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_ANGELS
; BATTLE_ANIM_OBJ_IN_NIGHTMARE
battleanimobj RELATIVE_X | X_FLIP, $80, BATTLE_ANIM_FRAMESET_IMP_FLIPPED, BATTLE_ANIM_FUNC_FLOAT_UP, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_ANGELS
battleanimobj RELATIVE_X | OAM_XFLIP, $80, BATTLE_ANIM_FRAMESET_IMP_FLIPPED, BATTLE_ANIM_FUNC_FLOAT_UP, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_ANGELS
; BATTLE_ANIM_OBJ_LOVELY_KISS
battleanimobj RELATIVE_X | X_FLIP, $80, BATTLE_ANIM_FRAMESET_IMP, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_ANGELS
battleanimobj RELATIVE_X | OAM_XFLIP, $80, BATTLE_ANIM_FRAMESET_IMP, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_ANGELS
; BATTLE_ANIM_OBJ_SWEET_KISS
battleanimobj RELATIVE_X | X_FLIP, $80, BATTLE_ANIM_FRAMESET_CHERUB, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_BLUE, BATTLE_ANIM_GFX_ANGELS
battleanimobj RELATIVE_X | OAM_XFLIP, $80, BATTLE_ANIM_FRAMESET_CHERUB, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_BLUE, BATTLE_ANIM_GFX_ANGELS
; BATTLE_ANIM_OBJ_SKETCH
battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $80, BATTLE_ANIM_FRAMESET_PENCIL, BATTLE_ANIM_FUNC_METRONOME_SPARKLE_SKETCH, PAL_BATTLE_OB_GREEN, BATTLE_ANIM_GFX_OBJECTS
battleanimobj RELATIVE_X | OAM_XFLIP | OAM_YFLIP, $80, BATTLE_ANIM_FRAMESET_PENCIL, BATTLE_ANIM_FUNC_METRONOME_SPARKLE_SKETCH, PAL_BATTLE_OB_GREEN, BATTLE_ANIM_GFX_OBJECTS
; BATTLE_ANIM_OBJ_ENCORE_HAND
battleanimobj RELATIVE_X | X_FLIP, $80, BATTLE_ANIM_FRAMESET_ENCORE_HAND, BATTLE_ANIM_FUNC_CLAMP_ENCORE, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_OBJECTS
battleanimobj RELATIVE_X | OAM_XFLIP, $80, BATTLE_ANIM_FRAMESET_ENCORE_HAND, BATTLE_ANIM_FUNC_CLAMP_ENCORE, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_OBJECTS
; BATTLE_ANIM_OBJ_ENCORE_STAR
battleanimobj RELATIVE_X | X_FLIP, $70, BATTLE_ANIM_FRAMESET_STAR, BATTLE_ANIM_FUNC_ENCORE_BELLY_DRUM, PAL_BATTLE_OB_YELLOW, BATTLE_ANIM_GFX_OBJECTS
battleanimobj RELATIVE_X | OAM_XFLIP, $70, BATTLE_ANIM_FRAMESET_STAR, BATTLE_ANIM_FUNC_ENCORE_BELLY_DRUM, PAL_BATTLE_OB_YELLOW, BATTLE_ANIM_GFX_OBJECTS
; BATTLE_ANIM_OBJ_DESTINY_BOND
battleanimobj RELATIVE_X | X_FLIP, $c0, BATTLE_ANIM_FRAMESET_DESTINY_BOND, BATTLE_ANIM_FUNC_USER_TO_TARGET, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_ANGELS
battleanimobj RELATIVE_X | OAM_XFLIP, $c0, BATTLE_ANIM_FRAMESET_DESTINY_BOND, BATTLE_ANIM_FUNC_USER_TO_TARGET, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_ANGELS
; BATTLE_ANIM_OBJ_MORNING_SUN
battleanimobj RELATIVE_X | X_FLIP, $40, BATTLE_ANIM_FRAMESET_MORNING_SUN, BATTLE_ANIM_FUNC_SWAGGER_MORNING_SUN, PAL_BATTLE_OB_YELLOW, BATTLE_ANIM_GFX_SHINE
battleanimobj RELATIVE_X | OAM_XFLIP, $40, BATTLE_ANIM_FRAMESET_MORNING_SUN, BATTLE_ANIM_FUNC_SWAGGER_MORNING_SUN, PAL_BATTLE_OB_YELLOW, BATTLE_ANIM_GFX_SHINE
; BATTLE_ANIM_OBJ_GLIMMER
battleanimobj RELATIVE_X, $80, BATTLE_ANIM_FRAMESET_GLIMMER, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_SHINE
; BATTLE_ANIM_OBJ_MOONLIGHT
@ -340,25 +340,25 @@ BattleAnimObjects:
; BATTLE_ANIM_OBJ_HIDDEN_POWER
battleanimobj RELATIVE_X, $88, BATTLE_ANIM_FRAMESET_CHARGE_ORB_1, BATTLE_ANIM_FUNC_HIDDEN_POWER, PAL_BATTLE_OB_RED, BATTLE_ANIM_GFX_CHARGE
; BATTLE_ANIM_OBJ_CROSS_CHOP1
battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLE_ANIM_FRAMESET_CROSS_CHOP_1, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_CUT
battleanimobj RELATIVE_X | OAM_XFLIP, $ff, BATTLE_ANIM_FRAMESET_CROSS_CHOP_1, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_CUT
; BATTLE_ANIM_OBJ_CROSS_CHOP2
battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLE_ANIM_FRAMESET_CROSS_CHOP_2, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_CUT
battleanimobj RELATIVE_X | OAM_XFLIP, $ff, BATTLE_ANIM_FRAMESET_CROSS_CHOP_2, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_CUT
; BATTLE_ANIM_OBJ_SANDSTORM
battleanimobj RELATIVE_X | X_FLIP, $00, BATTLE_ANIM_FRAMESET_SANDSTORM, BATTLE_ANIM_FUNC_RAIN_SANDSTORM, PAL_BATTLE_OB_BROWN, BATTLE_ANIM_GFX_POWDER
battleanimobj RELATIVE_X | OAM_XFLIP, $00, BATTLE_ANIM_FRAMESET_SANDSTORM, BATTLE_ANIM_FUNC_RAIN_SANDSTORM, PAL_BATTLE_OB_BROWN, BATTLE_ANIM_GFX_POWDER
; BATTLE_ANIM_OBJ_ZAP_CANNON
battleanimobj RELATIVE_X | X_FLIP, $90, BATTLE_ANIM_FRAMESET_ZAP_CANNON, BATTLE_ANIM_FUNC_USER_TO_TARGET_DISAPPEAR, PAL_BATTLE_OB_YELLOW, BATTLE_ANIM_GFX_LIGHTNING
battleanimobj RELATIVE_X | OAM_XFLIP, $90, BATTLE_ANIM_FRAMESET_ZAP_CANNON, BATTLE_ANIM_FUNC_USER_TO_TARGET_DISAPPEAR, PAL_BATTLE_OB_YELLOW, BATTLE_ANIM_GFX_LIGHTNING
; BATTLE_ANIM_OBJ_SPITE
battleanimobj RELATIVE_X | X_FLIP, $40, BATTLE_ANIM_FRAMESET_IMP, BATTLE_ANIM_FUNC_POWDER, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_ANGELS
battleanimobj RELATIVE_X | OAM_XFLIP, $40, BATTLE_ANIM_FRAMESET_IMP, BATTLE_ANIM_FUNC_POWDER, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_ANGELS
; BATTLE_ANIM_OBJ_CURSE
battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $90, BATTLE_ANIM_FRAMESET_CURSE_NAIL, BATTLE_ANIM_FUNC_CURSE, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_OBJECTS
battleanimobj RELATIVE_X | OAM_XFLIP | OAM_YFLIP, $90, BATTLE_ANIM_FRAMESET_CURSE_NAIL, BATTLE_ANIM_FUNC_CURSE, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_OBJECTS
; BATTLE_ANIM_OBJ_PERISH_SONG
battleanimobj ABSOLUTE_X, $00, BATTLE_ANIM_FRAMESET_MUSIC_NOTE_1, BATTLE_ANIM_FUNC_PERISH_SONG, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_NOISE
; BATTLE_ANIM_OBJ_FORESIGHT
battleanimobj RELATIVE_X, $80, BATTLE_ANIM_FRAMESET_FORESIGHT_SHINE, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_SHINE
; BATTLE_ANIM_OBJ_RAPID_SPIN
battleanimobj RELATIVE_X | X_FLIP, $b8, BATTLE_ANIM_FRAMESET_RAPID_SPIN, BATTLE_ANIM_FUNC_RAPID_SPIN, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_WIND
battleanimobj RELATIVE_X | OAM_XFLIP, $b8, BATTLE_ANIM_FRAMESET_RAPID_SPIN, BATTLE_ANIM_FUNC_RAPID_SPIN, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_WIND
; BATTLE_ANIM_OBJ_SWAGGER
battleanimobj RELATIVE_X | X_FLIP, $90, BATTLE_ANIM_FRAMESET_SWAGGER, BATTLE_ANIM_FUNC_SWAGGER_MORNING_SUN, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_WIND
battleanimobj RELATIVE_X | OAM_XFLIP, $90, BATTLE_ANIM_FRAMESET_SWAGGER, BATTLE_ANIM_FUNC_SWAGGER_MORNING_SUN, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_WIND
; BATTLE_ANIM_OBJ_BELLY_DRUM_HAND
battleanimobj RELATIVE_X, $a8, BATTLE_ANIM_FRAMESET_PALM, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_HIT
; BATTLE_ANIM_OBJ_BELLY_DRUM_NOTE
@ -368,9 +368,9 @@ BattleAnimObjects:
; BATTLE_ANIM_OBJ_BETA_PURSUIT
battleanimobj RELATIVE_X, $a8, BATTLE_ANIM_FRAMESET_UPSIDE_DOWN_PUNCH, BATTLE_ANIM_FUNC_BETA_PURSUIT, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_HIT
; BATTLE_ANIM_OBJ_SHOOTING_SPARKLE
battleanimobj RELATIVE_X | X_FLIP, $90, BATTLE_ANIM_FRAMESET_GROWING_SPARKLE, BATTLE_ANIM_FUNC_USER_TO_TARGET, PAL_BATTLE_OB_YELLOW, BATTLE_ANIM_GFX_SPEED
battleanimobj RELATIVE_X | OAM_XFLIP, $90, BATTLE_ANIM_FRAMESET_GROWING_SPARKLE, BATTLE_ANIM_FUNC_USER_TO_TARGET, PAL_BATTLE_OB_YELLOW, BATTLE_ANIM_GFX_SPEED
; BATTLE_ANIM_OBJ_RAIN
battleanimobj RELATIVE_X | X_FLIP, $00, BATTLE_ANIM_FRAMESET_RAIN, BATTLE_ANIM_FUNC_RAIN_SANDSTORM, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_WATER
battleanimobj RELATIVE_X | OAM_XFLIP, $00, BATTLE_ANIM_FRAMESET_RAIN, BATTLE_ANIM_FUNC_RAIN_SANDSTORM, PAL_BATTLE_OB_GRAY, BATTLE_ANIM_GFX_WATER
; BATTLE_ANIM_OBJ_B0
battleanimobj ABSOLUTE_X, $00, BATTLE_ANIM_FRAMESET_MIST, BATTLE_ANIM_FUNC_BATTLE_ANIM_OBJ_B0, PAL_BATTLE_OB_RED, BATTLE_ANIM_GFX_HAZE
; BATTLE_ANIM_OBJ_PSYCH_UP
@ -378,11 +378,11 @@ BattleAnimObjects:
; BATTLE_ANIM_OBJ_ANCIENTPOWER
battleanimobj RELATIVE_X, $b8, BATTLE_ANIM_FRAMESET_BIG_ROCK, BATTLE_ANIM_FUNC_ANCIENT_POWER, PAL_BATTLE_OB_BROWN, BATTLE_ANIM_GFX_ROCKS
; BATTLE_ANIM_OBJ_AEROBLAST
battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $98, BATTLE_ANIM_FRAMESET_AEROBLAST, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_YELLOW, BATTLE_ANIM_GFX_AEROBLAST
battleanimobj RELATIVE_X | OAM_XFLIP | OAM_YFLIP, $98, BATTLE_ANIM_FRAMESET_AEROBLAST, BATTLE_ANIM_FUNC_NULL, PAL_BATTLE_OB_YELLOW, BATTLE_ANIM_GFX_AEROBLAST
; BATTLE_ANIM_OBJ_SHADOW_BALL
battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $98, BATTLE_ANIM_FRAMESET_BARRAGE_BALL, BATTLE_ANIM_FUNC_WAVE_TO_TARGET, PAL_BATTLE_OB_BLUE, BATTLE_ANIM_GFX_EGG
battleanimobj RELATIVE_X | OAM_XFLIP | OAM_YFLIP, $98, BATTLE_ANIM_FRAMESET_BARRAGE_BALL, BATTLE_ANIM_FUNC_WAVE_TO_TARGET, PAL_BATTLE_OB_BLUE, BATTLE_ANIM_GFX_EGG
; BATTLE_ANIM_OBJ_ROCK_SMASH
battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLE_ANIM_FRAMESET_BIG_ROCK, BATTLE_ANIM_FUNC_ROCK_SMASH, PAL_BATTLE_OB_BROWN, BATTLE_ANIM_GFX_ROCKS
battleanimobj RELATIVE_X | OAM_XFLIP, $ff, BATTLE_ANIM_FRAMESET_BIG_ROCK, BATTLE_ANIM_FUNC_ROCK_SMASH, PAL_BATTLE_OB_BROWN, BATTLE_ANIM_GFX_ROCKS
; BATTLE_ANIM_OBJ_FLOWER
battleanimobj RELATIVE_X, $90, BATTLE_ANIM_FRAMESET_FLOWER, BATTLE_ANIM_FUNC_USER_TO_TARGET_SPIN, PAL_BATTLE_OB_RED, BATTLE_ANIM_GFX_FLOWER
; BATTLE_ANIM_OBJ_COTTON

View File

@ -42,7 +42,7 @@ MapGroupRoofs:
Roofs:
; entries correspond to ROOF_* constants
table_width ROOF_LENGTH * LEN_2BPP_TILE
table_width ROOF_LENGTH * TILE_SIZE
INCBIN "gfx/tilesets/roofs/new_bark.2bpp"
INCBIN "gfx/tilesets/roofs/violet.2bpp"
INCBIN "gfx/tilesets/roofs/azalea.2bpp"

View File

@ -7,7 +7,7 @@ PokemonPalettes:
; Shiny palettes are defined directly, not generated.
; 2 middle palettes, front and shiny, with 2 colors each
table_width PAL_COLOR_SIZE * 2 * 2
table_width COLOR_SIZE * 2 * 2
; 000
RGB 30, 22, 17

View File

@ -82,7 +82,7 @@ SpriteAnimFrameData:
oamframe SPRITE_ANIM_OAMSET_RED_WALK_1, 8
oamframe SPRITE_ANIM_OAMSET_RED_WALK_2, 8
oamframe SPRITE_ANIM_OAMSET_RED_WALK_1, 8
oamframe SPRITE_ANIM_OAMSET_RED_WALK_2, 8, OAM_X_FLIP
oamframe SPRITE_ANIM_OAMSET_RED_WALK_2, 8, B_OAM_XFLIP
oamrestart
.Frameset_GSIntroBubble:
@ -96,12 +96,12 @@ SpriteAnimFrameData:
oamrestart
.Frameset_GSIntroMagikarp:
oamframe SPRITE_ANIM_OAMSET_GS_INTRO_MAGIKARP_1, 1, OAM_X_FLIP
oamframe SPRITE_ANIM_OAMSET_GS_INTRO_MAGIKARP_2, 1, OAM_X_FLIP
oamframe SPRITE_ANIM_OAMSET_GS_INTRO_MAGIKARP_1, 1, B_OAM_XFLIP
oamframe SPRITE_ANIM_OAMSET_GS_INTRO_MAGIKARP_2, 1, B_OAM_XFLIP
oamrestart
.Frameset_UnusedIntroAerodactyl:
oamframe SPRITE_ANIM_OAMSET_UNUSED_INTRO_AERODACTYL, 7, OAM_X_FLIP
oamframe SPRITE_ANIM_OAMSET_UNUSED_INTRO_AERODACTYL, 7, B_OAM_XFLIP
oamend
.Frameset_GSIntroLapras:
@ -120,7 +120,7 @@ SpriteAnimFrameData:
oamend
.Frameset_GSIntroJigglypuff:
oamframe SPRITE_ANIM_OAMSET_GS_INTRO_JIGGLYPUFF_1, 25, OAM_X_FLIP
oamframe SPRITE_ANIM_OAMSET_GS_INTRO_JIGGLYPUFF_1, 25, B_OAM_XFLIP
oamframe SPRITE_ANIM_OAMSET_GS_INTRO_JIGGLYPUFF_3, 9
oamframe SPRITE_ANIM_OAMSET_GS_INTRO_JIGGLYPUFF_1, 25
oamframe SPRITE_ANIM_OAMSET_GS_INTRO_JIGGLYPUFF_3, 9
@ -166,7 +166,7 @@ SpriteAnimFrameData:
oamdelete
.Frameset_GSIntroCyndaquil:
oamframe SPRITE_ANIM_OAMSET_GS_INTRO_CYNDAQUIL, 24, OAM_X_FLIP
oamframe SPRITE_ANIM_OAMSET_GS_INTRO_CYNDAQUIL, 24, B_OAM_XFLIP
oamdelete
.Frameset_GSIntroTotodile:
@ -205,7 +205,7 @@ ENDC
.Frameset_GSGameFreakLogoStar:
oamframe SPRITE_ANIM_OAMSET_GS_GAMEFREAK_LOGO_STAR, 3
oamframe SPRITE_ANIM_OAMSET_GS_GAMEFREAK_LOGO_STAR, 3, OAM_Y_FLIP
oamframe SPRITE_ANIM_OAMSET_GS_GAMEFREAK_LOGO_STAR, 3, B_OAM_YFLIP
oamrestart
.Frameset_GSGameFreakLogoSparkle:
@ -218,8 +218,8 @@ ENDC
.Frameset_SlotsGolem:
oamframe SPRITE_ANIM_OAMSET_SLOTS_GOLEM_1, 7
oamframe SPRITE_ANIM_OAMSET_SLOTS_GOLEM_2, 7
oamframe SPRITE_ANIM_OAMSET_SLOTS_GOLEM_1, 7, OAM_Y_FLIP
oamframe SPRITE_ANIM_OAMSET_SLOTS_GOLEM_2, 7, OAM_X_FLIP
oamframe SPRITE_ANIM_OAMSET_SLOTS_GOLEM_1, 7, B_OAM_YFLIP
oamframe SPRITE_ANIM_OAMSET_SLOTS_GOLEM_2, 7, B_OAM_XFLIP
oamrestart
.Frameset_SlotsChansey:
@ -253,7 +253,7 @@ ENDC
oamframe SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_1, 3
oamframe SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_2, 3
oamframe SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_1, 3
oamframe SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_2, 3, OAM_X_FLIP
oamframe SPRITE_ANIM_OAMSET_TRADE_POKE_BALL_2, 3, B_OAM_XFLIP
oamrestart
.Frameset_TradePoof:
@ -290,7 +290,7 @@ ENDC
oamframe SPRITE_ANIM_OAMSET_MAGNET_TRAIN_RED_1, 8
oamframe SPRITE_ANIM_OAMSET_MAGNET_TRAIN_RED_2, 8
oamframe SPRITE_ANIM_OAMSET_MAGNET_TRAIN_RED_1, 8
oamframe SPRITE_ANIM_OAMSET_MAGNET_TRAIN_RED_2, 8, OAM_X_FLIP
oamframe SPRITE_ANIM_OAMSET_MAGNET_TRAIN_RED_2, 8, B_OAM_XFLIP
oamrestart
.Frameset_Unknown1: ; unreferenced
@ -310,9 +310,9 @@ ENDC
.Frameset_Unknown4: ; unreferenced
oamframe SPRITE_ANIM_OAMSET_UNUSED_49, 1
oamframe SPRITE_ANIM_OAMSET_UNUSED_49, 1, OAM_X_FLIP
oamframe SPRITE_ANIM_OAMSET_UNUSED_49, 1, OAM_X_FLIP, OAM_Y_FLIP
oamframe SPRITE_ANIM_OAMSET_UNUSED_49, 1, OAM_Y_FLIP
oamframe SPRITE_ANIM_OAMSET_UNUSED_49, 1, B_OAM_XFLIP
oamframe SPRITE_ANIM_OAMSET_UNUSED_49, 1, B_OAM_XFLIP, B_OAM_YFLIP
oamframe SPRITE_ANIM_OAMSET_UNUSED_49, 1, B_OAM_YFLIP
oamrestart
.Frameset_Unknown5: ; unreferenced
@ -362,15 +362,15 @@ ENDC
oamend
.Frameset_EggHatch2:
oamframe SPRITE_ANIM_OAMSET_EGG_HATCH, 32, OAM_X_FLIP
oamframe SPRITE_ANIM_OAMSET_EGG_HATCH, 32, B_OAM_XFLIP
oamend
.Frameset_EggHatch3:
oamframe SPRITE_ANIM_OAMSET_EGG_HATCH, 32, OAM_Y_FLIP
oamframe SPRITE_ANIM_OAMSET_EGG_HATCH, 32, B_OAM_YFLIP
oamend
.Frameset_EggHatch4:
oamframe SPRITE_ANIM_OAMSET_EGG_HATCH, 32, OAM_X_FLIP, OAM_Y_FLIP
oamframe SPRITE_ANIM_OAMSET_EGG_HATCH, 32, B_OAM_XFLIP, B_OAM_YFLIP
oamend
.Frameset_GSIntroHoOhLugia:
@ -399,5 +399,5 @@ ENDC
oamframe SPRITE_ANIM_OAMSET_TREE_1, 2
oamframe SPRITE_ANIM_OAMSET_HEADBUTT_TREE_2, 2
oamframe SPRITE_ANIM_OAMSET_TREE_1, 2
oamframe SPRITE_ANIM_OAMSET_HEADBUTT_TREE_2, 2, OAM_X_FLIP
oamframe SPRITE_ANIM_OAMSET_HEADBUTT_TREE_2, 2, B_OAM_XFLIP
oamrestart

View File

@ -123,37 +123,37 @@ ENDC
.OAMData_GSGameFreakLogoStar:
db 4
dbsprite -1, -1, 0, 0, $00, 0
dbsprite 0, -1, 0, 0, $00, 0 | X_FLIP
dbsprite 0, -1, 0, 0, $00, 0 | OAM_XFLIP
dbsprite -1, 0, 0, 0, $01, 0
dbsprite 0, 0, 0, 0, $01, 0 | X_FLIP
dbsprite 0, 0, 0, 0, $01, 0 | OAM_XFLIP
.OAMData_TradePokeBall1:
db 4
dbsprite -1, -1, 0, 0, $00, 0 | PRIORITY
dbsprite 0, -1, 0, 0, $00, 0 | X_FLIP | PRIORITY
dbsprite -1, 0, 0, 0, $01, 0 | PRIORITY
dbsprite 0, 0, 0, 0, $01, 0 | X_FLIP | PRIORITY
dbsprite -1, -1, 0, 0, $00, 0 | OAM_PRIO
dbsprite 0, -1, 0, 0, $00, 0 | OAM_XFLIP | OAM_PRIO
dbsprite -1, 0, 0, 0, $01, 0 | OAM_PRIO
dbsprite 0, 0, 0, 0, $01, 0 | OAM_XFLIP | OAM_PRIO
.OAMData_GSIntroSmallFireball:
db 4
dbsprite -1, -1, 0, 0, $00, 0
dbsprite 0, -1, 0, 0, $00, 0 | X_FLIP
dbsprite -1, 0, 0, 0, $00, 0 | Y_FLIP
dbsprite 0, 0, 0, 0, $00, 0 | X_FLIP | Y_FLIP
dbsprite 0, -1, 0, 0, $00, 0 | OAM_XFLIP
dbsprite -1, 0, 0, 0, $00, 0 | OAM_YFLIP
dbsprite 0, 0, 0, 0, $00, 0 | OAM_XFLIP | OAM_YFLIP
.OAMData_TradeTubeBulge:
db 4
dbsprite -1, -1, 0, 0, $00, 7
dbsprite 0, -1, 0, 0, $00, 7 | X_FLIP
dbsprite -1, 0, 0, 0, $00, 7 | Y_FLIP
dbsprite 0, 0, 0, 0, $00, 7 | X_FLIP | Y_FLIP
dbsprite 0, -1, 0, 0, $00, 7 | OAM_XFLIP
dbsprite -1, 0, 0, 0, $00, 7 | OAM_YFLIP
dbsprite 0, 0, 0, 0, $00, 7 | OAM_XFLIP | OAM_YFLIP
.OAMData_Unknown1: ; unreferenced
db 4
dbsprite -1, -1, 0, 0, $00, 0 | PRIORITY
dbsprite 0, -1, 0, 0, $00, 0 | X_FLIP | PRIORITY
dbsprite -1, 0, 0, 0, $00, 0 | Y_FLIP | PRIORITY
dbsprite 0, 0, 0, 0, $00, 0 | X_FLIP | Y_FLIP | PRIORITY
dbsprite -1, -1, 0, 0, $00, 0 | OAM_PRIO
dbsprite 0, -1, 0, 0, $00, 0 | OAM_XFLIP | OAM_PRIO
dbsprite -1, 0, 0, 0, $00, 0 | OAM_YFLIP | OAM_PRIO
dbsprite 0, 0, 0, 0, $00, 0 | OAM_XFLIP | OAM_YFLIP | OAM_PRIO
.OAMData_TradePoofBubble:
db 16
@ -161,18 +161,18 @@ ENDC
dbsprite -1, -2, 0, 0, $01, 0
dbsprite -2, -1, 0, 0, $02, 0
dbsprite -1, -1, 0, 0, $03, 0
dbsprite 0, -2, 0, 0, $01, 0 | X_FLIP
dbsprite 1, -2, 0, 0, $00, 0 | X_FLIP
dbsprite 0, -1, 0, 0, $03, 0 | X_FLIP
dbsprite 1, -1, 0, 0, $02, 0 | X_FLIP
dbsprite -2, 0, 0, 0, $02, 0 | Y_FLIP
dbsprite -1, 0, 0, 0, $03, 0 | Y_FLIP
dbsprite -2, 1, 0, 0, $00, 0 | Y_FLIP
dbsprite -1, 1, 0, 0, $01, 0 | Y_FLIP
dbsprite 0, 0, 0, 0, $03, 0 | X_FLIP | Y_FLIP
dbsprite 1, 0, 0, 0, $02, 0 | X_FLIP | Y_FLIP
dbsprite 0, 1, 0, 0, $01, 0 | X_FLIP | Y_FLIP
dbsprite 1, 1, 0, 0, $00, 0 | X_FLIP | Y_FLIP
dbsprite 0, -2, 0, 0, $01, 0 | OAM_XFLIP
dbsprite 1, -2, 0, 0, $00, 0 | OAM_XFLIP
dbsprite 0, -1, 0, 0, $03, 0 | OAM_XFLIP
dbsprite 1, -1, 0, 0, $02, 0 | OAM_XFLIP
dbsprite -2, 0, 0, 0, $02, 0 | OAM_YFLIP
dbsprite -1, 0, 0, 0, $03, 0 | OAM_YFLIP
dbsprite -2, 1, 0, 0, $00, 0 | OAM_YFLIP
dbsprite -1, 1, 0, 0, $01, 0 | OAM_YFLIP
dbsprite 0, 0, 0, 0, $03, 0 | OAM_XFLIP | OAM_YFLIP
dbsprite 1, 0, 0, 0, $02, 0 | OAM_XFLIP | OAM_YFLIP
dbsprite 0, 1, 0, 0, $01, 0 | OAM_XFLIP | OAM_YFLIP
dbsprite 1, 1, 0, 0, $00, 0 | OAM_XFLIP | OAM_YFLIP
.OAMData_GSIntroBigFireball:
db 36
@ -185,33 +185,33 @@ ENDC
dbsprite -3, -1, 0, 0, $06, 0
dbsprite -2, -1, 0, 0, $05, 0
dbsprite -1, -1, 0, 0, $05, 0
dbsprite 0, -3, 0, 0, $02, 0 | X_FLIP
dbsprite 1, -3, 0, 0, $01, 0 | X_FLIP
dbsprite 2, -3, 0, 0, $00, 0 | X_FLIP
dbsprite 0, -2, 0, 0, $05, 0 | X_FLIP
dbsprite 1, -2, 0, 0, $04, 0 | X_FLIP
dbsprite 2, -2, 0, 0, $03, 0 | X_FLIP
dbsprite 0, -1, 0, 0, $05, 0 | X_FLIP
dbsprite 1, -1, 0, 0, $05, 0 | X_FLIP
dbsprite 2, -1, 0, 0, $06, 0 | X_FLIP
dbsprite -3, 0, 0, 0, $06, 0 | Y_FLIP
dbsprite -2, 0, 0, 0, $05, 0 | Y_FLIP
dbsprite -1, 0, 0, 0, $05, 0 | Y_FLIP
dbsprite -3, 1, 0, 0, $03, 0 | Y_FLIP
dbsprite -2, 1, 0, 0, $04, 0 | Y_FLIP
dbsprite -1, 1, 0, 0, $05, 0 | Y_FLIP
dbsprite -3, 2, 0, 0, $00, 0 | Y_FLIP
dbsprite -2, 2, 0, 0, $01, 0 | Y_FLIP
dbsprite -1, 2, 0, 0, $02, 0 | Y_FLIP
dbsprite 0, 0, 0, 0, $05, 0 | X_FLIP | Y_FLIP
dbsprite 1, 0, 0, 0, $05, 0 | X_FLIP | Y_FLIP
dbsprite 2, 0, 0, 0, $06, 0 | X_FLIP | Y_FLIP
dbsprite 0, 1, 0, 0, $05, 0 | X_FLIP | Y_FLIP
dbsprite 1, 1, 0, 0, $04, 0 | X_FLIP | Y_FLIP
dbsprite 2, 1, 0, 0, $03, 0 | X_FLIP | Y_FLIP
dbsprite 0, 2, 0, 0, $02, 0 | X_FLIP | Y_FLIP
dbsprite 1, 2, 0, 0, $01, 0 | X_FLIP | Y_FLIP
dbsprite 2, 2, 0, 0, $00, 0 | X_FLIP | Y_FLIP
dbsprite 0, -3, 0, 0, $02, 0 | OAM_XFLIP
dbsprite 1, -3, 0, 0, $01, 0 | OAM_XFLIP
dbsprite 2, -3, 0, 0, $00, 0 | OAM_XFLIP
dbsprite 0, -2, 0, 0, $05, 0 | OAM_XFLIP
dbsprite 1, -2, 0, 0, $04, 0 | OAM_XFLIP
dbsprite 2, -2, 0, 0, $03, 0 | OAM_XFLIP
dbsprite 0, -1, 0, 0, $05, 0 | OAM_XFLIP
dbsprite 1, -1, 0, 0, $05, 0 | OAM_XFLIP
dbsprite 2, -1, 0, 0, $06, 0 | OAM_XFLIP
dbsprite -3, 0, 0, 0, $06, 0 | OAM_YFLIP
dbsprite -2, 0, 0, 0, $05, 0 | OAM_YFLIP
dbsprite -1, 0, 0, 0, $05, 0 | OAM_YFLIP
dbsprite -3, 1, 0, 0, $03, 0 | OAM_YFLIP
dbsprite -2, 1, 0, 0, $04, 0 | OAM_YFLIP
dbsprite -1, 1, 0, 0, $05, 0 | OAM_YFLIP
dbsprite -3, 2, 0, 0, $00, 0 | OAM_YFLIP
dbsprite -2, 2, 0, 0, $01, 0 | OAM_YFLIP
dbsprite -1, 2, 0, 0, $02, 0 | OAM_YFLIP
dbsprite 0, 0, 0, 0, $05, 0 | OAM_XFLIP | OAM_YFLIP
dbsprite 1, 0, 0, 0, $05, 0 | OAM_XFLIP | OAM_YFLIP
dbsprite 2, 0, 0, 0, $06, 0 | OAM_XFLIP | OAM_YFLIP
dbsprite 0, 1, 0, 0, $05, 0 | OAM_XFLIP | OAM_YFLIP
dbsprite 1, 1, 0, 0, $04, 0 | OAM_XFLIP | OAM_YFLIP
dbsprite 2, 1, 0, 0, $03, 0 | OAM_XFLIP | OAM_YFLIP
dbsprite 0, 2, 0, 0, $02, 0 | OAM_XFLIP | OAM_YFLIP
dbsprite 1, 2, 0, 0, $01, 0 | OAM_XFLIP | OAM_YFLIP
dbsprite 2, 2, 0, 0, $00, 0 | OAM_XFLIP | OAM_YFLIP
.OAMData_Unused43_4A:
db 9
@ -320,10 +320,10 @@ ENDC
.OAMData_MagnetTrainRed:
db 4
dbsprite -1, -1, 0, 0, $00, PAL_OW_RED | PRIORITY
dbsprite 0, -1, 0, 0, $01, PAL_OW_RED | PRIORITY
dbsprite -1, 0, 0, 0, $02, PAL_OW_RED | PRIORITY
dbsprite 0, 0, 0, 0, $03, PAL_OW_RED | PRIORITY
dbsprite -1, -1, 0, 0, $00, PAL_OW_RED | OAM_PRIO
dbsprite 0, -1, 0, 0, $01, PAL_OW_RED | OAM_PRIO
dbsprite -1, 0, 0, 0, $02, PAL_OW_RED | OAM_PRIO
dbsprite 0, 0, 0, 0, $03, PAL_OW_RED | OAM_PRIO
.OAMData_PartyMonWithMail1:
db 4
@ -389,23 +389,23 @@ ENDC
dbsprite -2, -1, 0, 0, $21, 0
dbsprite -1, -1, 0, 0, $22, 0
dbsprite 0, -1, 0, 0, $23, 0
dbsprite -3, 0, 0, 0, $30, 0 | PRIORITY
dbsprite -2, 0, 0, 0, $31, 0 | PRIORITY
dbsprite -1, 0, 0, 0, $32, 0 | PRIORITY
dbsprite 0, 0, 0, 0, $33, 0 | PRIORITY
dbsprite 1, 0, 0, 0, $34, 0 | PRIORITY
dbsprite -3, 1, 0, 0, $40, 0 | PRIORITY
dbsprite -2, 1, 0, 0, $41, 0 | PRIORITY
dbsprite -1, 1, 0, 0, $42, 0 | PRIORITY
dbsprite 0, 1, 0, 0, $43, 0 | PRIORITY
dbsprite 1, 1, 0, 0, $44, 0 | PRIORITY
dbsprite 2, 1, 0, 0, $45, 0 | PRIORITY
dbsprite -3, 2, 0, 0, $50, 0 | PRIORITY
dbsprite -2, 2, 0, 0, $51, 0 | PRIORITY
dbsprite -1, 2, 0, 0, $52, 0 | PRIORITY
dbsprite 0, 2, 0, 0, $53, 0 | PRIORITY
dbsprite 1, 2, 0, 0, $54, 0 | PRIORITY
dbsprite 2, 2, 0, 0, $55, 0 | PRIORITY
dbsprite -3, 0, 0, 0, $30, 0 | OAM_PRIO
dbsprite -2, 0, 0, 0, $31, 0 | OAM_PRIO
dbsprite -1, 0, 0, 0, $32, 0 | OAM_PRIO
dbsprite 0, 0, 0, 0, $33, 0 | OAM_PRIO
dbsprite 1, 0, 0, 0, $34, 0 | OAM_PRIO
dbsprite -3, 1, 0, 0, $40, 0 | OAM_PRIO
dbsprite -2, 1, 0, 0, $41, 0 | OAM_PRIO
dbsprite -1, 1, 0, 0, $42, 0 | OAM_PRIO
dbsprite 0, 1, 0, 0, $43, 0 | OAM_PRIO
dbsprite 1, 1, 0, 0, $44, 0 | OAM_PRIO
dbsprite 2, 1, 0, 0, $45, 0 | OAM_PRIO
dbsprite -3, 2, 0, 0, $50, 0 | OAM_PRIO
dbsprite -2, 2, 0, 0, $51, 0 | OAM_PRIO
dbsprite -1, 2, 0, 0, $52, 0 | OAM_PRIO
dbsprite 0, 2, 0, 0, $53, 0 | OAM_PRIO
dbsprite 1, 2, 0, 0, $54, 0 | OAM_PRIO
dbsprite 2, 2, 0, 0, $55, 0 | OAM_PRIO
.OAMData_GSIntroLapras2:
db 27
@ -419,23 +419,23 @@ ENDC
dbsprite -2, -1, 0, 0, $21, 0
dbsprite -1, -1, 0, 0, $22, 0
dbsprite 0, -1, 0, 0, $23, 0
dbsprite -3, 0, 0, 0, $30, 0 | PRIORITY
dbsprite -2, 0, 0, 0, $31, 0 | PRIORITY
dbsprite -1, 0, 0, 0, $32, 0 | PRIORITY
dbsprite 0, 0, 0, 0, $33, 0 | PRIORITY
dbsprite 1, 0, 0, 0, $34, 0 | PRIORITY
dbsprite -3, 1, 0, 0, $40, 0 | PRIORITY
dbsprite -2, 1, 0, 0, $41, 0 | PRIORITY
dbsprite -1, 1, 0, 0, $42, 0 | PRIORITY
dbsprite 0, 1, 0, 0, $43, 0 | PRIORITY
dbsprite 1, 1, 0, 0, $44, 0 | PRIORITY
dbsprite 2, 1, 0, 0, $45, 0 | PRIORITY
dbsprite -3, 2, 0, 0, $50, 0 | PRIORITY
dbsprite -2, 2, 0, 0, $51, 0 | PRIORITY
dbsprite -1, 2, 0, 0, $52, 0 | PRIORITY
dbsprite 0, 2, 0, 0, $53, 0 | PRIORITY
dbsprite 1, 2, 0, 0, $54, 0 | PRIORITY
dbsprite 2, 2, 0, 0, $55, 0 | PRIORITY
dbsprite -3, 0, 0, 0, $30, 0 | OAM_PRIO
dbsprite -2, 0, 0, 0, $31, 0 | OAM_PRIO
dbsprite -1, 0, 0, 0, $32, 0 | OAM_PRIO
dbsprite 0, 0, 0, 0, $33, 0 | OAM_PRIO
dbsprite 1, 0, 0, 0, $34, 0 | OAM_PRIO
dbsprite -3, 1, 0, 0, $40, 0 | OAM_PRIO
dbsprite -2, 1, 0, 0, $41, 0 | OAM_PRIO
dbsprite -1, 1, 0, 0, $42, 0 | OAM_PRIO
dbsprite 0, 1, 0, 0, $43, 0 | OAM_PRIO
dbsprite 1, 1, 0, 0, $44, 0 | OAM_PRIO
dbsprite 2, 1, 0, 0, $45, 0 | OAM_PRIO
dbsprite -3, 2, 0, 0, $50, 0 | OAM_PRIO
dbsprite -2, 2, 0, 0, $51, 0 | OAM_PRIO
dbsprite -1, 2, 0, 0, $52, 0 | OAM_PRIO
dbsprite 0, 2, 0, 0, $53, 0 | OAM_PRIO
dbsprite 1, 2, 0, 0, $54, 0 | OAM_PRIO
dbsprite 2, 2, 0, 0, $55, 0 | OAM_PRIO
.OAMData_GSIntroLapras3:
db 29
@ -452,22 +452,22 @@ ENDC
dbsprite -1, -1, 0, 0, $22, 0
dbsprite 0, -1, 0, 0, $23, 0
dbsprite 1, -1, 0, 0, $24, 0
dbsprite -3, 0, 0, 0, $30, 0 | PRIORITY
dbsprite -2, 0, 0, 0, $31, 0 | PRIORITY
dbsprite -1, 0, 0, 0, $32, 0 | PRIORITY
dbsprite 0, 0, 0, 0, $33, 0 | PRIORITY
dbsprite 1, 0, 0, 0, $34, 0 | PRIORITY
dbsprite -3, 1, 0, 0, $40, 0 | PRIORITY
dbsprite -2, 1, 0, 0, $41, 0 | PRIORITY
dbsprite -1, 1, 0, 0, $42, 0 | PRIORITY
dbsprite 0, 1, 0, 0, $43, 0 | PRIORITY
dbsprite 1, 1, 0, 0, $44, 0 | PRIORITY
dbsprite 2, 1, 0, 0, $45, 0 | PRIORITY
dbsprite -2, 2, 0, 0, $51, 0 | PRIORITY
dbsprite -1, 2, 0, 0, $52, 0 | PRIORITY
dbsprite 0, 2, 0, 0, $53, 0 | PRIORITY
dbsprite 1, 2, 0, 0, $54, 0 | PRIORITY
dbsprite 2, 2, 0, 0, $55, 0 | PRIORITY
dbsprite -3, 0, 0, 0, $30, 0 | OAM_PRIO
dbsprite -2, 0, 0, 0, $31, 0 | OAM_PRIO
dbsprite -1, 0, 0, 0, $32, 0 | OAM_PRIO
dbsprite 0, 0, 0, 0, $33, 0 | OAM_PRIO
dbsprite 1, 0, 0, 0, $34, 0 | OAM_PRIO
dbsprite -3, 1, 0, 0, $40, 0 | OAM_PRIO
dbsprite -2, 1, 0, 0, $41, 0 | OAM_PRIO
dbsprite -1, 1, 0, 0, $42, 0 | OAM_PRIO
dbsprite 0, 1, 0, 0, $43, 0 | OAM_PRIO
dbsprite 1, 1, 0, 0, $44, 0 | OAM_PRIO
dbsprite 2, 1, 0, 0, $45, 0 | OAM_PRIO
dbsprite -2, 2, 0, 0, $51, 0 | OAM_PRIO
dbsprite -1, 2, 0, 0, $52, 0 | OAM_PRIO
dbsprite 0, 2, 0, 0, $53, 0 | OAM_PRIO
dbsprite 1, 2, 0, 0, $54, 0 | OAM_PRIO
dbsprite 2, 2, 0, 0, $55, 0 | OAM_PRIO
.OAMData_GSIntroNote:
db 2
@ -496,9 +496,9 @@ ENDC
.OAMData_TextEntryCursor:
db 4
dbsprite -1, -1, 7, 7, $00, 0
dbsprite 0, -1, 0, 7, $00, 0 | X_FLIP
dbsprite -1, 0, 7, 0, $00, 0 | Y_FLIP
dbsprite 0, 0, 0, 0, $00, 0 | X_FLIP | Y_FLIP
dbsprite 0, -1, 0, 7, $00, 0 | OAM_XFLIP
dbsprite -1, 0, 7, 0, $00, 0 | OAM_YFLIP
dbsprite 0, 0, 0, 0, $00, 0 | OAM_XFLIP | OAM_YFLIP
.OAMData_TextEntryCursorBig:
db 10
@ -506,90 +506,90 @@ ENDC
dbsprite 1, -1, 0, 7, $01, 0
dbsprite 2, -1, 0, 7, $01, 0
dbsprite 3, -1, 0, 7, $01, 0
dbsprite 4, -1, 0, 7, $00, 0 | X_FLIP
dbsprite 0, 0, 0, 0, $00, 0 | Y_FLIP
dbsprite 1, 0, 0, 0, $01, 0 | Y_FLIP
dbsprite 2, 0, 0, 0, $01, 0 | Y_FLIP
dbsprite 3, 0, 0, 0, $01, 0 | Y_FLIP
dbsprite 4, 0, 0, 0, $00, 0 | X_FLIP | Y_FLIP
dbsprite 4, -1, 0, 7, $00, 0 | OAM_XFLIP
dbsprite 0, 0, 0, 0, $00, 0 | OAM_YFLIP
dbsprite 1, 0, 0, 0, $01, 0 | OAM_YFLIP
dbsprite 2, 0, 0, 0, $01, 0 | OAM_YFLIP
dbsprite 3, 0, 0, 0, $01, 0 | OAM_YFLIP
dbsprite 4, 0, 0, 0, $00, 0 | OAM_XFLIP | OAM_YFLIP
.OAMData_GSGameFreakLogo:
db 15
dbsprite -2, -3, 4, 4, $00, 1 | OBP_NUM
dbsprite -1, -3, 4, 4, $01, 1 | OBP_NUM
dbsprite 0, -3, 4, 4, $02, 1 | OBP_NUM
dbsprite -2, -2, 4, 4, $03, 1 | OBP_NUM
dbsprite -1, -2, 4, 4, $04, 1 | OBP_NUM
dbsprite 0, -2, 4, 4, $05, 1 | OBP_NUM
dbsprite -2, -1, 4, 4, $06, 1 | OBP_NUM
dbsprite -1, -1, 4, 4, $07, 1 | OBP_NUM
dbsprite 0, -1, 4, 4, $08, 1 | OBP_NUM
dbsprite -2, 0, 4, 4, $09, 1 | OBP_NUM
dbsprite -1, 0, 4, 4, $0a, 1 | OBP_NUM
dbsprite 0, 0, 4, 4, $0b, 1 | OBP_NUM
dbsprite -2, 1, 4, 4, $0c, 1 | OBP_NUM
dbsprite -1, 1, 4, 4, $0d, 1 | OBP_NUM
dbsprite 0, 1, 4, 4, $0e, 1 | OBP_NUM
dbsprite -2, -3, 4, 4, $00, 1 | OAM_PAL1
dbsprite -1, -3, 4, 4, $01, 1 | OAM_PAL1
dbsprite 0, -3, 4, 4, $02, 1 | OAM_PAL1
dbsprite -2, -2, 4, 4, $03, 1 | OAM_PAL1
dbsprite -1, -2, 4, 4, $04, 1 | OAM_PAL1
dbsprite 0, -2, 4, 4, $05, 1 | OAM_PAL1
dbsprite -2, -1, 4, 4, $06, 1 | OAM_PAL1
dbsprite -1, -1, 4, 4, $07, 1 | OAM_PAL1
dbsprite 0, -1, 4, 4, $08, 1 | OAM_PAL1
dbsprite -2, 0, 4, 4, $09, 1 | OAM_PAL1
dbsprite -1, 0, 4, 4, $0a, 1 | OAM_PAL1
dbsprite 0, 0, 4, 4, $0b, 1 | OAM_PAL1
dbsprite -2, 1, 4, 4, $0c, 1 | OAM_PAL1
dbsprite -1, 1, 4, 4, $0d, 1 | OAM_PAL1
dbsprite 0, 1, 4, 4, $0e, 1 | OAM_PAL1
.OAMData_SlotsGolem:
db 6
dbsprite -2, -2, 4, 4, $00, 5 | OBP_NUM
dbsprite -1, -2, 4, 4, $02, 5 | OBP_NUM
dbsprite 0, -2, 4, 4, $00, 5 | OBP_NUM | X_FLIP
dbsprite -2, 0, 4, 4, $04, 5 | OBP_NUM
dbsprite -1, 0, 4, 4, $06, 5 | OBP_NUM
dbsprite 0, 0, 4, 4, $04, 5 | OBP_NUM | X_FLIP
dbsprite -2, -2, 4, 4, $00, 5 | OAM_PAL1
dbsprite -1, -2, 4, 4, $02, 5 | OAM_PAL1
dbsprite 0, -2, 4, 4, $00, 5 | OAM_PAL1 | OAM_XFLIP
dbsprite -2, 0, 4, 4, $04, 5 | OAM_PAL1
dbsprite -1, 0, 4, 4, $06, 5 | OAM_PAL1
dbsprite 0, 0, 4, 4, $04, 5 | OAM_PAL1 | OAM_XFLIP
.OAMData_SlotsChansey1:
db 6
dbsprite -2, -2, 4, 4, $00, 6 | OBP_NUM
dbsprite -1, -2, 4, 4, $02, 6 | OBP_NUM
dbsprite 0, -2, 4, 4, $04, 6 | OBP_NUM
dbsprite -2, 0, 4, 4, $06, 6 | OBP_NUM
dbsprite -1, 0, 4, 4, $08, 6 | OBP_NUM
dbsprite 0, 0, 4, 4, $0a, 6 | OBP_NUM
dbsprite -2, -2, 4, 4, $00, 6 | OAM_PAL1
dbsprite -1, -2, 4, 4, $02, 6 | OAM_PAL1
dbsprite 0, -2, 4, 4, $04, 6 | OAM_PAL1
dbsprite -2, 0, 4, 4, $06, 6 | OAM_PAL1
dbsprite -1, 0, 4, 4, $08, 6 | OAM_PAL1
dbsprite 0, 0, 4, 4, $0a, 6 | OAM_PAL1
.OAMData_SlotsChansey2:
db 6
dbsprite -2, -2, 4, 4, $00, 6 | OBP_NUM
dbsprite -1, -2, 4, 4, $02, 6 | OBP_NUM
dbsprite 0, -2, 4, 4, $04, 6 | OBP_NUM
dbsprite -2, 0, 4, 4, $0c, 6 | OBP_NUM
dbsprite -1, 0, 4, 4, $0e, 6 | OBP_NUM
dbsprite 0, 0, 4, 4, $10, 6 | OBP_NUM
dbsprite -2, -2, 4, 4, $00, 6 | OAM_PAL1
dbsprite -1, -2, 4, 4, $02, 6 | OAM_PAL1
dbsprite 0, -2, 4, 4, $04, 6 | OAM_PAL1
dbsprite -2, 0, 4, 4, $0c, 6 | OAM_PAL1
dbsprite -1, 0, 4, 4, $0e, 6 | OAM_PAL1
dbsprite 0, 0, 4, 4, $10, 6 | OAM_PAL1
.OAMData_SlotsChansey3:
db 6
dbsprite -2, -2, 4, 4, $00, 6 | OBP_NUM
dbsprite -1, -2, 4, 4, $02, 6 | OBP_NUM
dbsprite 0, -2, 4, 4, $04, 6 | OBP_NUM
dbsprite -2, 0, 4, 4, $12, 6 | OBP_NUM
dbsprite -1, 0, 4, 4, $14, 6 | OBP_NUM
dbsprite 0, 0, 4, 4, $16, 6 | OBP_NUM
dbsprite -2, -2, 4, 4, $00, 6 | OAM_PAL1
dbsprite -1, -2, 4, 4, $02, 6 | OAM_PAL1
dbsprite 0, -2, 4, 4, $04, 6 | OAM_PAL1
dbsprite -2, 0, 4, 4, $12, 6 | OAM_PAL1
dbsprite -1, 0, 4, 4, $14, 6 | OAM_PAL1
dbsprite 0, 0, 4, 4, $16, 6 | OAM_PAL1
.OAMData_SlotsChansey4:
db 6
dbsprite -2, -2, 4, 4, $00, 6 | OBP_NUM
dbsprite -1, -2, 4, 4, $02, 6 | OBP_NUM
dbsprite 0, -2, 4, 4, $04, 6 | OBP_NUM
dbsprite -2, 0, 4, 4, $18, 6 | OBP_NUM
dbsprite -1, 0, 4, 4, $1a, 6 | OBP_NUM
dbsprite 0, 0, 4, 4, $1c, 6 | OBP_NUM
dbsprite -2, -2, 4, 4, $00, 6 | OAM_PAL1
dbsprite -1, -2, 4, 4, $02, 6 | OAM_PAL1
dbsprite 0, -2, 4, 4, $04, 6 | OAM_PAL1
dbsprite -2, 0, 4, 4, $18, 6 | OAM_PAL1
dbsprite -1, 0, 4, 4, $1a, 6 | OAM_PAL1
dbsprite 0, 0, 4, 4, $1c, 6 | OAM_PAL1
.OAMData_SlotsChansey5:
db 6
dbsprite -2, -2, 4, 4, $1e, 6 | OBP_NUM
dbsprite -1, -2, 4, 4, $20, 6 | OBP_NUM
dbsprite 0, -2, 4, 4, $22, 6 | OBP_NUM
dbsprite -2, 0, 4, 4, $24, 6 | OBP_NUM
dbsprite -1, 0, 4, 4, $26, 6 | OBP_NUM
dbsprite 0, 0, 4, 4, $28, 6 | OBP_NUM
dbsprite -2, -2, 4, 4, $1e, 6 | OAM_PAL1
dbsprite -1, -2, 4, 4, $20, 6 | OAM_PAL1
dbsprite 0, -2, 4, 4, $22, 6 | OAM_PAL1
dbsprite -2, 0, 4, 4, $24, 6 | OAM_PAL1
dbsprite -1, 0, 4, 4, $26, 6 | OAM_PAL1
dbsprite 0, 0, 4, 4, $28, 6 | OAM_PAL1
.OAMData_RadioTuningKnob:
db 3
dbsprite -1, -2, 4, 4, $00, 0 | OBP_NUM
dbsprite -1, -1, 4, 4, $00, 0 | OBP_NUM
dbsprite -1, 0, 4, 4, $00, 0 | OBP_NUM
dbsprite -1, -2, 4, 4, $00, 0 | OAM_PAL1
dbsprite -1, -1, 4, 4, $00, 0 | OAM_PAL1
dbsprite -1, 0, 4, 4, $00, 0 | OAM_PAL1
.OAMData_Unused4B:
db 6
@ -730,7 +730,7 @@ IF DEF(_GOLD)
.OAMData_GSTitleTrail:
db 1
dbsprite -1, -1, 4, 4, $00, 1 | OBP_NUM
dbsprite -1, -1, 4, 4, $00, 1 | OAM_PAL1
ELIF DEF(_SILVER)
.OAMData_GSIntroLugia1:

View File

@ -60,10 +60,10 @@ FacingStepDown1: ; walking down 1
FacingStepDown3: ; walking down 2
db 4 ; #
db 0, 8, X_FLIP, $80
db 0, 0, X_FLIP, $81
db 8, 8, RELATIVE_ATTRIBUTES | X_FLIP, $82
db 8, 0, RELATIVE_ATTRIBUTES | X_FLIP, $83
db 0, 8, OAM_XFLIP, $80
db 0, 0, OAM_XFLIP, $81
db 8, 8, RELATIVE_ATTRIBUTES | OAM_XFLIP, $82
db 8, 0, RELATIVE_ATTRIBUTES | OAM_XFLIP, $83
FacingStepUp0:
FacingStepUp2: ; standing up
@ -82,10 +82,10 @@ FacingStepUp1: ; walking up 1
FacingStepUp3: ; walking up 2
db 4 ; #
db 0, 8, X_FLIP, $84
db 0, 0, X_FLIP, $85
db 8, 8, RELATIVE_ATTRIBUTES | X_FLIP, $86
db 8, 0, RELATIVE_ATTRIBUTES | X_FLIP, $87
db 0, 8, OAM_XFLIP, $84
db 0, 0, OAM_XFLIP, $85
db 8, 8, RELATIVE_ATTRIBUTES | OAM_XFLIP, $86
db 8, 0, RELATIVE_ATTRIBUTES | OAM_XFLIP, $87
FacingStepLeft0:
FacingStepLeft2: ; standing left
@ -98,10 +98,10 @@ FacingStepLeft2: ; standing left
FacingStepRight0:
FacingStepRight2: ; standing right
db 4 ; #
db 0, 8, X_FLIP, $08
db 0, 0, X_FLIP, $09
db 8, 8, RELATIVE_ATTRIBUTES | X_FLIP, $0a
db 8, 0, RELATIVE_ATTRIBUTES | X_FLIP, $0b
db 0, 8, OAM_XFLIP, $08
db 0, 0, OAM_XFLIP, $09
db 8, 8, RELATIVE_ATTRIBUTES | OAM_XFLIP, $0a
db 8, 0, RELATIVE_ATTRIBUTES | OAM_XFLIP, $0b
FacingStepLeft1:
FacingStepLeft3: ; walking left
@ -114,10 +114,10 @@ FacingStepLeft3: ; walking left
FacingStepRight1:
FacingStepRight3: ; walking right
db 4 ; #
db 0, 8, X_FLIP, $88
db 0, 0, X_FLIP, $89
db 8, 8, RELATIVE_ATTRIBUTES | X_FLIP, $8a
db 8, 0, RELATIVE_ATTRIBUTES | X_FLIP, $8b
db 0, 8, OAM_XFLIP, $88
db 0, 0, OAM_XFLIP, $89
db 8, 8, RELATIVE_ATTRIBUTES | OAM_XFLIP, $8a
db 8, 0, RELATIVE_ATTRIBUTES | OAM_XFLIP, $8b
FacingFishDown: ; fishing down
db 5 ; #
@ -141,14 +141,14 @@ FacingFishLeft: ; fishing left
db 0, 8, 0, $09
db 8, 0, RELATIVE_ATTRIBUTES, $0a
db 8, 8, RELATIVE_ATTRIBUTES, $0b
db 5, -8, ABSOLUTE_TILE_ID | X_FLIP, $fd
db 5, -8, ABSOLUTE_TILE_ID | OAM_XFLIP, $fd
FacingFishRight: ; fishing right
db 5 ; #
db 0, 8, X_FLIP, $08
db 0, 0, X_FLIP, $09
db 8, 8, RELATIVE_ATTRIBUTES | X_FLIP, $0a
db 8, 0, RELATIVE_ATTRIBUTES | X_FLIP, $0b
db 0, 8, OAM_XFLIP, $08
db 0, 0, OAM_XFLIP, $09
db 8, 8, RELATIVE_ATTRIBUTES | OAM_XFLIP, $0a
db 8, 0, RELATIVE_ATTRIBUTES | OAM_XFLIP, $0b
db 5, 16, ABSOLUTE_TILE_ID, $fd
FacingEmote: ; emote
@ -161,7 +161,7 @@ FacingEmote: ; emote
FacingShadow: ; shadow
db 2 ; #
db 0, 0, ABSOLUTE_TILE_ID, $fc
db 0, 8, ABSOLUTE_TILE_ID | X_FLIP, $fc
db 0, 8, ABSOLUTE_TILE_ID | OAM_XFLIP, $fc
FacingBigDollSymmetric: ; big snorlax or lapras doll
db 16 ; #
@ -173,14 +173,14 @@ FacingBigDollSymmetric: ; big snorlax or lapras doll
db 16, 8, 0, $05
db 24, 0, 0, $06
db 24, 8, 0, $07
db 0, 24, X_FLIP, $00
db 0, 16, X_FLIP, $01
db 8, 24, X_FLIP, $02
db 8, 16, X_FLIP, $03
db 16, 24, X_FLIP, $04
db 16, 16, X_FLIP, $05
db 24, 24, X_FLIP, $06
db 24, 16, X_FLIP, $07
db 0, 24, OAM_XFLIP, $00
db 0, 16, OAM_XFLIP, $01
db 8, 24, OAM_XFLIP, $02
db 8, 16, OAM_XFLIP, $03
db 16, 24, OAM_XFLIP, $04
db 16, 16, OAM_XFLIP, $05
db 24, 24, OAM_XFLIP, $06
db 24, 16, OAM_XFLIP, $07
FacingWeirdTree1:
db 4 ; #
@ -191,10 +191,10 @@ FacingWeirdTree1:
FacingWeirdTree3:
db 4 ; #
db 0, 8, X_FLIP, $04
db 0, 0, X_FLIP, $05
db 8, 8, X_FLIP, $06
db 8, 0, X_FLIP, $07
db 0, 8, OAM_XFLIP, $04
db 0, 0, OAM_XFLIP, $05
db 8, 8, OAM_XFLIP, $06
db 8, 0, OAM_XFLIP, $07
FacingBigDollAsymmetric: ; big doll other than snorlax or lapras
db 14 ; #
@ -206,11 +206,11 @@ FacingBigDollAsymmetric: ; big doll other than snorlax or lapras
db 24, 8, 0, $0a
db 0, 24, 0, $03
db 0, 16, 0, $02
db 8, 24, X_FLIP, $02
db 8, 24, OAM_XFLIP, $02
db 8, 16, 0, $06
db 16, 24, 0, $09
db 16, 16, 0, $08
db 24, 24, X_FLIP, $04
db 24, 24, OAM_XFLIP, $04
db 24, 16, 0, $0b
FacingBoulderDust1: ; boulder dust 1
@ -230,9 +230,9 @@ FacingBoulderDust2: ; boulder dust 2
FacingGrass1:
db 2 ; #
db 8, 0, 0, $00
db 8, 8, 0 | X_FLIP, $00
db 8, 8, 0 | OAM_XFLIP, $00
FacingGrass2:
db 2 ; #
db 9, -1, 0, $00
db 9, 9, 0 | X_FLIP, $00
db 9, 9, 0 | OAM_XFLIP, $00

View File

@ -4,7 +4,7 @@ TrainerPalettes:
; Each .gbcpal is generated from the corresponding .png, and
; only the middle two colors are included, not black or white.
table_width PAL_COLOR_SIZE * 2
table_width COLOR_SIZE * 2
PlayerPalette: ; Chris uses the same colors as Cal
INCBIN "gfx/trainers/cal.gbcpal", middle_colors

View File

@ -599,7 +599,7 @@ StartTrainerBattle_LoadPokeBallGraphics:
call CopyBytes
hlcoord 0, 0, wAttrmap
ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
ld bc, SCREEN_AREA
ld a, PAL_BG_TEXT
call ByteFill

View File

@ -7776,7 +7776,7 @@ StartBattle:
call ShowLinkBattleParticipants
farcall ClearBattleRAM
ld hl, rLCDC
res rLCDC_WINDOW_TILEMAP, [hl] ; select vBGMap0/vBGMap2
res B_LCDC_WIN_MAP, [hl] ; select vBGMap0/vBGMap2
ld a, [wOtherTrainerClass]
and a
jr nz, .trainer
@ -7797,7 +7797,7 @@ StartBattle:
xor a
ldh [hBGMapMode], a
ld hl, rLCDC
set rLCDC_WINDOW_TILEMAP, [hl] ; select vBGMap1/vBGMap3
set B_LCDC_WIN_MAP, [hl] ; select vBGMap1/vBGMap3
call EmptyBattleTextbox
hlcoord 9, 7
lb bc, 5, 11
@ -8091,7 +8091,7 @@ _DisplayLinkRecord:
call CloseSRAM
hlcoord 0, 0, wAttrmap
xor a
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld bc, SCREEN_AREA
call ByteFill
call WaitBGMap2
ld b, SCGB_DIPLOMA
@ -8583,13 +8583,13 @@ InitBattleDisplay:
call OpenSRAM
ld hl, sDecompressScratch
ld bc, BG_MAP_WIDTH * BG_MAP_HEIGHT
ld bc, TILEMAP_AREA
ld a, " "
call ByteFill
ld de, sDecompressScratch
hlbgcoord 0, 0
lb bc, BANK(@), (BG_MAP_WIDTH * BG_MAP_HEIGHT) / LEN_2BPP_TILE
lb bc, BANK(@), (TILEMAP_AREA) / TILE_SIZE
call Request2bpp
call CloseSRAM

View File

@ -32,7 +32,7 @@ BattleIntroSlidingPics:
push bc
ld hl, wShadowOAMSprite00XCoord
ld c, $12 ; 18
ld de, SPRITEOAMSTRUCT_LENGTH
ld de, OBJ_SIZE
.loop2
dec [hl]
dec [hl]

View File

@ -41,7 +41,7 @@ ShowOTTrainerMonsRemaining:
ld [hl], 4 * TILE_WIDTH
ld a, -TILE_WIDTH
ld [wPlaceBallsDirection], a
ld hl, wShadowOAMSprite00 + PARTY_LENGTH * SPRITEOAMSTRUCT_LENGTH
ld hl, wShadowOAMSprite00 + PARTY_LENGTH * OBJ_SIZE
jp LoadTrainerHudOAM
StageBallTilesData:
@ -197,7 +197,7 @@ LinkBattle_TrainerHuds:
ld a, 10 * TILE_WIDTH
ld [hli], a
ld [hl], 13 * TILE_WIDTH
ld hl, wShadowOAMSprite00 + PARTY_LENGTH * SPRITEOAMSTRUCT_LENGTH
ld hl, wShadowOAMSprite00 + PARTY_LENGTH * OBJ_SIZE
jp LoadTrainerHudOAM
LoadTrainerHudOAM:

View File

@ -195,9 +195,9 @@ PlaceWindowOverBattleTextbox: ; unreferenced
xor a
ldh [hBGMapMode], a
; bgcoord hBGMapAddress, 0, 20
ld a, LOW(vBGMap0 + 20 * BG_MAP_WIDTH)
ld a, LOW(vBGMap0 + 20 * TILEMAP_WIDTH)
ldh [hBGMapAddress], a
ld a, HIGH(vBGMap0 + 20 * BG_MAP_WIDTH)
ld a, HIGH(vBGMap0 + 20 * TILEMAP_WIDTH)
ldh [hBGMapAddress + 1], a
call WaitBGMap2
ld a, (SCREEN_HEIGHT - TEXTBOX_HEIGHT) * TILE_WIDTH
@ -217,13 +217,13 @@ BattleAnim_ClearOAM:
; Instead of deleting the sprites, make them all use PAL_BATTLE_OB_ENEMY
ld hl, wShadowOAMSprite00Attributes
ld c, NUM_SPRITE_OAM_STRUCTS
ld c, OAM_COUNT
.loop
ld a, [hl]
and ~(PALETTE_MASK | VRAM_BANK_1) ; zeros out the palette bits
and ~(OAM_PALETTE | OAM_BANK1) ; zeros out the palette bits
assert PAL_BATTLE_OB_ENEMY == 0
ld [hli], a
rept SPRITEOAMSTRUCT_LENGTH - 1
rept OBJ_SIZE - 1
inc hl
endr
dec c
@ -650,7 +650,7 @@ BattleAnimCmd_5GFX:
.loop
vc_hook Reduce_move_anim_flashing_PRESENT
ld a, [wBattleAnimGFXTempTileID]
cp (vTiles1 - vTiles0) / LEN_2BPP_TILE - BATTLEANIM_BASE_TILE
cp (vTiles1 - vTiles0) / TILE_SIZE - BATTLEANIM_BASE_TILE
ret nc
call GetBattleAnimByte
ld [hli], a

View File

@ -89,7 +89,7 @@ BattleAnimOAMUpdate:
ld hl, wBattleAnimTempOAMFlags
ld a, [wBattleAnimTempFrameOAMFlags]
xor [hl]
and PRIORITY | Y_FLIP | X_FLIP
and OAM_PRIO | OAM_YFLIP | OAM_XFLIP
ld [hl], a
pop af
@ -118,7 +118,7 @@ BattleAnimOAMUpdate:
push hl
ld a, [hl]
ld hl, wBattleAnimTempOAMFlags
bit OAM_Y_FLIP, [hl]
bit B_OAM_YFLIP, [hl]
jr z, .no_yflip
add $8
xor $ff
@ -139,7 +139,7 @@ BattleAnimOAMUpdate:
push hl
ld a, [hl]
ld hl, wBattleAnimTempOAMFlags
bit OAM_X_FLIP, [hl]
bit B_OAM_XFLIP, [hl]
jr z, .no_xflip
add $8
xor $ff
@ -164,14 +164,14 @@ BattleAnimOAMUpdate:
ld b, a
ld a, [hl]
xor b
and PRIORITY | Y_FLIP | X_FLIP
and OAM_PRIO | OAM_YFLIP | OAM_XFLIP
ld b, a
ld a, [hl]
and OBP_NUM
and OAM_PAL1
or b
ld b, a
ld a, [wBattleAnimTempPalette]
and PALETTE_MASK | VRAM_BANK_1
and OAM_PALETTE | OAM_BANK1
or b
ld [de], a
@ -203,7 +203,7 @@ InitBattleAnimBuffer:
add hl, bc
ld a, [hl]
and PRIORITY
and OAM_PRIO
ld [wBattleAnimTempOAMFlags], a
xor a
ld [wBattleAnimTempFrameOAMFlags], a

View File

@ -938,7 +938,7 @@ BattleAnimFunction_RazorLeaf:
call ReinitBattleAnimFrameset
ld hl, BATTLEANIMSTRUCT_OAMFLAGS
add hl, bc
res OAM_X_FLIP, [hl]
res B_OAM_XFLIP, [hl]
.four
.five
.six
@ -2649,7 +2649,7 @@ BattleAnimFunction_String:
; Obj Param 0 flips when used by enemy
ld hl, BATTLEANIMSTRUCT_OAMFLAGS
add hl, bc
set OAM_Y_FLIP, [hl]
set B_OAM_YFLIP, [hl]
.not_param_zero
assert BATTLE_ANIM_FRAMESET_STRING_SHOT_1 + 1 == BATTLE_ANIM_FRAMESET_STRING_SHOT_2 \
&& BATTLE_ANIM_FRAMESET_STRING_SHOT_2 + 1 == BATTLE_ANIM_FRAMESET_STRING_SHOT_3

View File

@ -37,14 +37,14 @@ GetBattleAnimFrame:
push af
ld a, [hl]
push hl
and ~(Y_FLIP << 1 | X_FLIP << 1)
and ~(OAM_YFLIP << 1 | OAM_XFLIP << 1)
ld hl, BATTLEANIMSTRUCT_DURATION
add hl, bc
ld [hl], a
pop hl
.okay
ld a, [hl]
and Y_FLIP << 1 | X_FLIP << 1 ; The << 1 is compensated in the "oamframe" macro
and OAM_YFLIP << 1 | OAM_XFLIP << 1 ; The << 1 is compensated in the "oamframe" macro
srl a
ld [wBattleAnimTempFrameOAMFlags], a
pop af

View File

@ -142,12 +142,12 @@ DebugColor_InitVRAM:
call ByteFill
hlcoord 0, 0, wAttrmap
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld bc, SCREEN_AREA
xor a
call ByteFill
hlcoord 0, 0
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld bc, SCREEN_AREA
xor a
call ByteFill
@ -189,7 +189,7 @@ DebugColor_InitPalettes:
ld bc, 16 palettes
call CopyBytes
ld a, 1 << rBGPI_AUTO_INCREMENT
ld a, BGPI_AUTOINC
ldh [rBGPI], a
ld hl, Palette_DebugBG
ld c, 8 palettes
@ -199,7 +199,7 @@ DebugColor_InitPalettes:
dec c
jr nz, .bg_loop
ld a, 1 << rOBPI_AUTO_INCREMENT
ld a, OBPI_AUTOINC
ldh [rOBPI], a
ld hl, Palette_DebugOB
ld c, 8 palettes
@ -292,7 +292,7 @@ DebugColor_InitScreen:
xor a
ldh [hBGMapMode], a
hlcoord 0, 0
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld bc, SCREEN_AREA
ld a, DEBUGTEST_BLACK
call ByteFill
hlcoord 1, 3
@ -1080,11 +1080,11 @@ TilesetColorPicker: ; unreferenced
ld a, HIGH(vBGMap1)
ldh [hBGMapAddress + 1], a
hlcoord 0, 0
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld bc, SCREEN_AREA
ld a, DEBUGTEST_BLACK
call ByteFill
hlcoord 0, 0, wAttrmap
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld bc, SCREEN_AREA
ld a, PAL_BG_TEXT
call ByteFill
decoord 1, 1, 0
@ -1176,7 +1176,7 @@ DebugColorMain2: ; unreferenced
ld hl, wDebugTilesetCurPalette
ld a, [hl]
inc a
and PALETTE_MASK
and OAM_PALETTE
cp PAL_BG_TEXT
jr nz, .palette_ok
xor a ; PAL_BG_GRAY
@ -1284,7 +1284,7 @@ DebugTileset_SelectColorBox:
inc a
.done
maskbits NUM_PAL_COLORS
maskbits PAL_COLORS
ld [wDebugTilesetCurColor], a
ld e, a
ld d, 0

View File

@ -1238,18 +1238,18 @@ DebugRoom_DayHTimeString:
db "DAY H<LF>TIME@"
DebugRoom_GetClock:
ld a, SRAM_ENABLE
ld [MBC3SRamEnable], a
ld a, RAMG_SRAM_ENABLE
ld [rRAMG], a
xor a
ld [MBC3LatchClock], a
ld [rRTCLATCH], a
inc a
ld [MBC3LatchClock], a
ld b, RTC_DH - RTC_S + 1
ld c, RTC_S
ld [rRTCLATCH], a
ld b, RAMB_RTC_DH - RAMB_RTC_S + 1
ld c, RAMB_RTC_S
.loop
ld a, c
ld [MBC3SRamBank], a
ld a, [MBC3RTC]
ld [rRAMB], a
ld a, [rRTCREG]
ld [hli], a
inc c
dec b
@ -1258,15 +1258,15 @@ DebugRoom_GetClock:
ret
DebugRoom_SetClock:
ld a, SRAM_ENABLE
ld [MBC3SRamEnable], a
ld b, RTC_DH - RTC_S + 1
ld c, RTC_S
ld a, RAMG_SRAM_ENABLE
ld [rRAMG], a
ld b, RAMB_RTC_DH - RAMB_RTC_S + 1
ld c, RAMB_RTC_S
.loop
ld a, c
ld [MBC3SRamBank], a
ld [rRAMB], a
ld a, [hli]
ld [MBC3RTC], a
ld [rRTCREG], a
inc c
dec b
jr nz, .loop

View File

@ -19,7 +19,7 @@ PlaceDiplomaOnScreen:
call Decompress
ld hl, DiplomaPage1Tilemap
decoord 0, 0
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld bc, SCREEN_AREA
call CopyBytes
ld de, .Player
hlcoord 2, 5
@ -57,12 +57,12 @@ PlaceDiplomaOnScreen:
PrintDiplomaPage2:
hlcoord 0, 0
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld bc, SCREEN_AREA
ld a, " "
call ByteFill
ld hl, DiplomaPage2Tilemap
decoord 0, 0
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld bc, SCREEN_AREA
call CopyBytes
ld de, .GameFreak
hlcoord 8, 0

View File

@ -36,7 +36,7 @@ ShakeHeadbuttTree:
ld hl, SPRITEANIMSTRUCT_TILE_ID
add hl, bc
ld [hl], FIELDMOVE_TREE
ld a, 36 * SPRITEOAMSTRUCT_LENGTH
ld a, 36 * OBJ_SIZE
ld [wCurSpriteOAMAddr], a
farcall DoNextFrameForAllSprites
call HideHeadbuttTree
@ -51,7 +51,7 @@ ShakeHeadbuttTree:
and a
jr z, .done
dec [hl]
ld a, 36 * SPRITEOAMSTRUCT_LENGTH
ld a, 36 * OBJ_SIZE
ld [wCurSpriteOAMAddr], a
farcall DoNextFrameForAllSprites
call DelayFrame
@ -122,7 +122,7 @@ OWCutAnimation:
ld a, [wJumptableIndex]
bit JUMPTABLE_EXIT_F, a
jr nz, .finish
ld a, 36 * SPRITEOAMSTRUCT_LENGTH
ld a, 36 * OBJ_SIZE
ld [wCurSpriteOAMAddr], a
callfar DoNextFrameForAllSprites
call OWCutJumptable
@ -319,7 +319,7 @@ FlyFromAnim:
ld a, [wJumptableIndex]
bit JUMPTABLE_EXIT_F, a
jr nz, .exit
ld a, 0 * SPRITEOAMSTRUCT_LENGTH
ld a, 0 * OBJ_SIZE
ld [wCurSpriteOAMAddr], a
callfar DoNextFrameForAllSprites
call FlyFunction_FrameTimer
@ -356,7 +356,7 @@ FlyToAnim:
ld a, [wJumptableIndex]
bit JUMPTABLE_EXIT_F, a
jr nz, .exit
ld a, 0 * SPRITEOAMSTRUCT_LENGTH
ld a, 0 * OBJ_SIZE
ld [wCurSpriteOAMAddr], a
callfar DoNextFrameForAllSprites
call FlyFunction_FrameTimer
@ -375,7 +375,7 @@ FlyToAnim:
ld c, 4
.OAMloop
ld [hli], a ; tile id
rept SPRITEOAMSTRUCT_LENGTH - 1
rept OBJ_SIZE - 1
inc hl
endr
inc a

View File

@ -231,7 +231,7 @@ AnimateHOFMonEntrance:
ld hl, wTempMonDVs
predef GetUnownLetter
hlcoord 0, 0
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld bc, SCREEN_AREA
ld a, " "
call ByteFill
ld de, vTiles2 tile $31
@ -255,7 +255,7 @@ AnimateHOFMonEntrance:
xor a
ld [wBoxAlignment], a
hlcoord 0, 0
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld bc, SCREEN_AREA
ld a, " "
call ByteFill
hlcoord 6, 5
@ -448,7 +448,7 @@ DisplayHOFMon:
ld a, "@"
ld [wStringBuffer2 + MON_NAME_LENGTH - 1], a
hlcoord 0, 0
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld bc, SCREEN_AREA
ld a, " "
call ByteFill
hlcoord 0, 0
@ -520,7 +520,7 @@ HOF_AnimatePlayerPic:
lb bc, BANK(FontExtra), 1
call Request2bpp
hlcoord 0, 0
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld bc, SCREEN_AREA
ld a, " "
call ByteFill
@ -550,7 +550,7 @@ HOF_AnimatePlayerPic:
xor a
ld [wBoxAlignment], a
hlcoord 0, 0
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld bc, SCREEN_AREA
ld a, " "
call ByteFill
ld a, CAL

View File

@ -134,25 +134,25 @@ ENDM
ret
.PC_ElmsLab_OAM:
dbsprite 4, 4, 2, 0, $7c, PAL_OW_TREE | OBP_NUM
dbsprite 4, 4, 6, 0, $7c, PAL_OW_TREE | OBP_NUM
dbsprite 4, 4, 0, 6, $7d, PAL_OW_TREE | OBP_NUM
dbsprite 5, 4, 0, 6, $7d, PAL_OW_TREE | OBP_NUM | X_FLIP
dbsprite 4, 5, 0, 3, $7d, PAL_OW_TREE | OBP_NUM
dbsprite 5, 5, 0, 3, $7d, PAL_OW_TREE | OBP_NUM | X_FLIP
dbsprite 4, 6, 0, 0, $7d, PAL_OW_TREE | OBP_NUM
dbsprite 5, 6, 0, 0, $7d, PAL_OW_TREE | OBP_NUM | X_FLIP
dbsprite 4, 4, 2, 0, $7c, PAL_OW_TREE | OAM_PAL1
dbsprite 4, 4, 6, 0, $7c, PAL_OW_TREE | OAM_PAL1
dbsprite 4, 4, 0, 6, $7d, PAL_OW_TREE | OAM_PAL1
dbsprite 5, 4, 0, 6, $7d, PAL_OW_TREE | OAM_PAL1 | OAM_XFLIP
dbsprite 4, 5, 0, 3, $7d, PAL_OW_TREE | OAM_PAL1
dbsprite 5, 5, 0, 3, $7d, PAL_OW_TREE | OAM_PAL1 | OAM_XFLIP
dbsprite 4, 6, 0, 0, $7d, PAL_OW_TREE | OAM_PAL1
dbsprite 5, 6, 0, 0, $7d, PAL_OW_TREE | OAM_PAL1 | OAM_XFLIP
.HealMachineGFX:
INCBIN "gfx/overworld/heal_machine.2bpp"
.HOF_OAM:
dbsprite 10, 7, 1, 4, $7d, PAL_OW_TREE | OBP_NUM
dbsprite 10, 7, 6, 4, $7d, PAL_OW_TREE | OBP_NUM
dbsprite 9, 7, 5, 3, $7d, PAL_OW_TREE | OBP_NUM
dbsprite 11, 7, 2, 3, $7d, PAL_OW_TREE | OBP_NUM
dbsprite 9, 7, 1, 1, $7d, PAL_OW_TREE | OBP_NUM
dbsprite 11, 7, 5, 1, $7d, PAL_OW_TREE | OBP_NUM
dbsprite 10, 7, 1, 4, $7d, PAL_OW_TREE | OAM_PAL1
dbsprite 10, 7, 6, 4, $7d, PAL_OW_TREE | OAM_PAL1
dbsprite 9, 7, 5, 3, $7d, PAL_OW_TREE | OAM_PAL1
dbsprite 11, 7, 2, 3, $7d, PAL_OW_TREE | OAM_PAL1
dbsprite 9, 7, 1, 1, $7d, PAL_OW_TREE | OAM_PAL1
dbsprite 11, 7, 5, 1, $7d, PAL_OW_TREE | OAM_PAL1
.LoadPalettes:
call IsCGB

View File

@ -167,7 +167,7 @@ DrawMagnetTrain:
xor a
.loop
call GetMagnetTrainBGTiles
ld b, BG_MAP_WIDTH / 2
ld b, TILEMAP_WIDTH / 2
call .FillAlt
inc a
cp SCREEN_HEIGHT
@ -244,19 +244,19 @@ SetMagnetTrainPals:
; bushes
hlbgcoord 0, 0
ld bc, 4 * BG_MAP_WIDTH
ld bc, 4 * TILEMAP_WIDTH
ld a, PAL_BG_GREEN
call ByteFill
; train
hlbgcoord 0, 4
ld bc, 10 * BG_MAP_WIDTH
ld bc, 10 * TILEMAP_WIDTH
xor a ; PAL_BG_GRAY
call ByteFill
; more bushes
hlbgcoord 0, 14
ld bc, 4 * BG_MAP_WIDTH
ld bc, 4 * TILEMAP_WIDTH
ld a, PAL_BG_GREEN
call ByteFill

View File

@ -204,7 +204,7 @@ INCBIN "gfx/printer/bold_b.1bpp"
PlaceUnownPrinterFrontpic:
hlcoord 0, 0
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld bc, SCREEN_AREA
ld a, " "
call ByteFill
hlcoord 7, 11

View File

@ -22,7 +22,7 @@ RotateUnownFrontpic:
ld hl, wPrintedUnownTileDest
call .Copy
pop hl
ld bc, LEN_2BPP_TILE
ld bc, TILE_SIZE
add hl, bc
pop bc
inc c
@ -44,7 +44,7 @@ RotateUnownFrontpic:
ret
.Copy:
ld c, LEN_2BPP_TILE
ld c, TILE_SIZE
.loop_copy
ld a, [hli]
ld [de], a

View File

@ -502,7 +502,7 @@ CardFlip_InitTilemap:
xor a
ldh [hBGMapMode], a
hlcoord 0, 0
ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
ld bc, SCREEN_AREA
ld a, $29
call ByteFill
hlcoord 9, 0
@ -1149,25 +1149,25 @@ PlaceOAMCardBorder:
dbsprite 1, 0, 0, 0, $06, 0
dbsprite 2, 0, 0, 0, $06, 0
dbsprite 3, 0, 0, 0, $06, 0
dbsprite 4, 0, 0, 0, $04, 0 | X_FLIP
dbsprite 4, 0, 0, 0, $04, 0 | OAM_XFLIP
dbsprite 0, 1, 0, 0, $05, 0
dbsprite 4, 1, 0, 0, $05, 0 | X_FLIP
dbsprite 4, 1, 0, 0, $05, 0 | OAM_XFLIP
dbsprite 0, 2, 0, 0, $05, 0
dbsprite 4, 2, 0, 0, $05, 0 | X_FLIP
dbsprite 4, 2, 0, 0, $05, 0 | OAM_XFLIP
dbsprite 0, 3, 0, 0, $05, 0
dbsprite 4, 3, 0, 0, $05, 0 | X_FLIP
dbsprite 4, 3, 0, 0, $05, 0 | OAM_XFLIP
dbsprite 0, 4, 0, 0, $05, $00
dbsprite 4, 4, 0, 0, $05, 0 | X_FLIP
dbsprite 4, 4, 0, 0, $05, 0 | OAM_XFLIP
dbsprite 0, 5, 0, 0, $04, 0 | Y_FLIP
dbsprite 1, 5, 0, 0, $06, 0 | Y_FLIP
dbsprite 2, 5, 0, 0, $06, 0 | Y_FLIP
dbsprite 3, 5, 0, 0, $06, 0 | Y_FLIP
dbsprite 4, 5, 0, 0, $04, 0 | X_FLIP | Y_FLIP
dbsprite 0, 5, 0, 0, $04, 0 | OAM_YFLIP
dbsprite 1, 5, 0, 0, $06, 0 | OAM_YFLIP
dbsprite 2, 5, 0, 0, $06, 0 | OAM_YFLIP
dbsprite 3, 5, 0, 0, $06, 0 | OAM_YFLIP
dbsprite 4, 5, 0, 0, $04, 0 | OAM_XFLIP | OAM_YFLIP
ChooseCard_HandleJoypad:
ld hl, hJoyLast
@ -1400,145 +1400,145 @@ ENDM
.SingleTile:
db 6
dbsprite -1, 0, 7, 0, $00, 0 | PRIORITY
dbsprite 0, 0, 0, 0, $02, 0 | PRIORITY
dbsprite 1, 0, 0, 0, $03, 0 | PRIORITY
dbsprite -1, 0, 7, 5, $00, 0 | Y_FLIP | PRIORITY
dbsprite 0, 0, 0, 5, $02, 0 | Y_FLIP | PRIORITY
dbsprite 1, 0, 0, 5, $03, 0 | PRIORITY
dbsprite -1, 0, 7, 0, $00, 0 | OAM_PRIO
dbsprite 0, 0, 0, 0, $02, 0 | OAM_PRIO
dbsprite 1, 0, 0, 0, $03, 0 | OAM_PRIO
dbsprite -1, 0, 7, 5, $00, 0 | OAM_YFLIP | OAM_PRIO
dbsprite 0, 0, 0, 5, $02, 0 | OAM_YFLIP | OAM_PRIO
dbsprite 1, 0, 0, 5, $03, 0 | OAM_PRIO
.PokeGroup:
db 26
dbsprite -1, 0, 7, 0, $00, 0 | PRIORITY
dbsprite 0, 0, 0, 0, $02, 0 | PRIORITY
dbsprite 1, 0, 0, 0, $00, 0 | X_FLIP | PRIORITY
dbsprite -1, 1, 7, 0, $01, 0 | PRIORITY
dbsprite 1, 1, 0, 0, $01, 0 | X_FLIP | PRIORITY
dbsprite -1, 2, 7, 0, $01, 0 | PRIORITY
dbsprite 1, 2, 0, 0, $03, 0 | PRIORITY
dbsprite -1, 3, 7, 0, $01, 0 | PRIORITY
dbsprite 1, 3, 0, 0, $03, 0 | PRIORITY
dbsprite -1, 4, 7, 0, $01, 0 | PRIORITY
dbsprite 1, 4, 0, 0, $03, 0 | PRIORITY
dbsprite -1, 5, 7, 0, $01, 0 | PRIORITY
dbsprite 1, 5, 0, 0, $03, 0 | PRIORITY
dbsprite -1, 6, 7, 0, $01, 0 | PRIORITY
dbsprite 1, 6, 0, 0, $03, 0 | PRIORITY
dbsprite -1, 7, 7, 0, $01, 0 | PRIORITY
dbsprite 1, 7, 0, 0, $03, 0 | PRIORITY
dbsprite -1, 8, 7, 0, $01, 0 | PRIORITY
dbsprite 1, 8, 0, 0, $03, 0 | PRIORITY
dbsprite -1, 9, 7, 0, $01, 0 | PRIORITY
dbsprite 1, 9, 0, 0, $03, 0 | PRIORITY
dbsprite -1, 10, 7, 0, $01, 0 | PRIORITY
dbsprite 1, 10, 0, 0, $03, 0 | PRIORITY
dbsprite -1, 10, 7, 1, $00, 0 | Y_FLIP | PRIORITY
dbsprite 0, 10, 0, 1, $02, 0 | Y_FLIP | PRIORITY
dbsprite 1, 10, 0, 1, $03, 0 | PRIORITY
dbsprite -1, 0, 7, 0, $00, 0 | OAM_PRIO
dbsprite 0, 0, 0, 0, $02, 0 | OAM_PRIO
dbsprite 1, 0, 0, 0, $00, 0 | OAM_XFLIP | OAM_PRIO
dbsprite -1, 1, 7, 0, $01, 0 | OAM_PRIO
dbsprite 1, 1, 0, 0, $01, 0 | OAM_XFLIP | OAM_PRIO
dbsprite -1, 2, 7, 0, $01, 0 | OAM_PRIO
dbsprite 1, 2, 0, 0, $03, 0 | OAM_PRIO
dbsprite -1, 3, 7, 0, $01, 0 | OAM_PRIO
dbsprite 1, 3, 0, 0, $03, 0 | OAM_PRIO
dbsprite -1, 4, 7, 0, $01, 0 | OAM_PRIO
dbsprite 1, 4, 0, 0, $03, 0 | OAM_PRIO
dbsprite -1, 5, 7, 0, $01, 0 | OAM_PRIO
dbsprite 1, 5, 0, 0, $03, 0 | OAM_PRIO
dbsprite -1, 6, 7, 0, $01, 0 | OAM_PRIO
dbsprite 1, 6, 0, 0, $03, 0 | OAM_PRIO
dbsprite -1, 7, 7, 0, $01, 0 | OAM_PRIO
dbsprite 1, 7, 0, 0, $03, 0 | OAM_PRIO
dbsprite -1, 8, 7, 0, $01, 0 | OAM_PRIO
dbsprite 1, 8, 0, 0, $03, 0 | OAM_PRIO
dbsprite -1, 9, 7, 0, $01, 0 | OAM_PRIO
dbsprite 1, 9, 0, 0, $03, 0 | OAM_PRIO
dbsprite -1, 10, 7, 0, $01, 0 | OAM_PRIO
dbsprite 1, 10, 0, 0, $03, 0 | OAM_PRIO
dbsprite -1, 10, 7, 1, $00, 0 | OAM_YFLIP | OAM_PRIO
dbsprite 0, 10, 0, 1, $02, 0 | OAM_YFLIP | OAM_PRIO
dbsprite 1, 10, 0, 1, $03, 0 | OAM_PRIO
.NumGroup:
db 20
dbsprite -1, 0, 7, 0, $00, 0 | PRIORITY
dbsprite 0, 0, 0, 0, $02, 0 | PRIORITY
dbsprite 1, 0, 0, 0, $02, 0 | PRIORITY
dbsprite 2, 0, 0, 0, $03, 0 | PRIORITY
dbsprite 3, 0, 0, 0, $02, 0 | PRIORITY
dbsprite 4, 0, 0, 0, $03, 0 | PRIORITY
dbsprite 5, 0, 0, 0, $02, 0 | PRIORITY
dbsprite 6, 0, 0, 0, $03, 0 | PRIORITY
dbsprite 7, 0, 0, 0, $02, 0 | PRIORITY
dbsprite 8, 0, 0, 0, $03, 0 | PRIORITY
dbsprite -1, 0, 7, 5, $00, 0 | Y_FLIP | PRIORITY
dbsprite 0, 0, 0, 5, $02, 0 | Y_FLIP | PRIORITY
dbsprite 1, 0, 0, 5, $02, 0 | Y_FLIP | PRIORITY
dbsprite 2, 0, 0, 5, $03, 0 | PRIORITY
dbsprite 3, 0, 0, 5, $02, 0 | Y_FLIP | PRIORITY
dbsprite 4, 0, 0, 5, $03, 0 | PRIORITY
dbsprite 5, 0, 0, 5, $02, 0 | Y_FLIP | PRIORITY
dbsprite 6, 0, 0, 5, $03, 0 | PRIORITY
dbsprite 7, 0, 0, 5, $02, 0 | Y_FLIP | PRIORITY
dbsprite 8, 0, 0, 5, $03, 0 | PRIORITY
dbsprite -1, 0, 7, 0, $00, 0 | OAM_PRIO
dbsprite 0, 0, 0, 0, $02, 0 | OAM_PRIO
dbsprite 1, 0, 0, 0, $02, 0 | OAM_PRIO
dbsprite 2, 0, 0, 0, $03, 0 | OAM_PRIO
dbsprite 3, 0, 0, 0, $02, 0 | OAM_PRIO
dbsprite 4, 0, 0, 0, $03, 0 | OAM_PRIO
dbsprite 5, 0, 0, 0, $02, 0 | OAM_PRIO
dbsprite 6, 0, 0, 0, $03, 0 | OAM_PRIO
dbsprite 7, 0, 0, 0, $02, 0 | OAM_PRIO
dbsprite 8, 0, 0, 0, $03, 0 | OAM_PRIO
dbsprite -1, 0, 7, 5, $00, 0 | OAM_YFLIP | OAM_PRIO
dbsprite 0, 0, 0, 5, $02, 0 | OAM_YFLIP | OAM_PRIO
dbsprite 1, 0, 0, 5, $02, 0 | OAM_YFLIP | OAM_PRIO
dbsprite 2, 0, 0, 5, $03, 0 | OAM_PRIO
dbsprite 3, 0, 0, 5, $02, 0 | OAM_YFLIP | OAM_PRIO
dbsprite 4, 0, 0, 5, $03, 0 | OAM_PRIO
dbsprite 5, 0, 0, 5, $02, 0 | OAM_YFLIP | OAM_PRIO
dbsprite 6, 0, 0, 5, $03, 0 | OAM_PRIO
dbsprite 7, 0, 0, 5, $02, 0 | OAM_YFLIP | OAM_PRIO
dbsprite 8, 0, 0, 5, $03, 0 | OAM_PRIO
.NumGroupPair:
db 30
dbsprite 0, 0, 0, 0, $00, 0 | PRIORITY
dbsprite 1, 0, 0, 0, $02, 0 | PRIORITY
dbsprite 2, 0, 0, 0, $02, 0 | PRIORITY
dbsprite 3, 0, 0, 0, $03, 0 | PRIORITY
dbsprite 4, 0, 0, 0, $02, 0 | PRIORITY
dbsprite 5, 0, 0, 0, $03, 0 | PRIORITY
dbsprite 6, 0, 0, 0, $02, 0 | PRIORITY
dbsprite 7, 0, 0, 0, $03, 0 | PRIORITY
dbsprite 8, 0, 0, 0, $02, 0 | PRIORITY
dbsprite 9, 0, 0, 0, $03, 0 | PRIORITY
dbsprite 0, 1, 0, 0, $01, 0 | PRIORITY
dbsprite 3, 1, 0, 0, $03, 0 | PRIORITY
dbsprite 5, 1, 0, 0, $03, 0 | PRIORITY
dbsprite 7, 1, 0, 0, $03, 0 | PRIORITY
dbsprite 9, 1, 0, 0, $03, 0 | PRIORITY
dbsprite 0, 2, 0, 0, $01, 0 | PRIORITY
dbsprite 3, 2, 0, 0, $03, 0 | PRIORITY
dbsprite 5, 2, 0, 0, $03, 0 | PRIORITY
dbsprite 7, 2, 0, 0, $03, 0 | PRIORITY
dbsprite 9, 2, 0, 0, $03, 0 | PRIORITY
dbsprite 0, 2, 0, 1, $00, 0 | Y_FLIP | PRIORITY
dbsprite 1, 2, 0, 1, $02, 0 | Y_FLIP | PRIORITY
dbsprite 2, 2, 0, 1, $02, 0 | Y_FLIP | PRIORITY
dbsprite 3, 2, 0, 1, $03, 0 | PRIORITY
dbsprite 4, 2, 0, 1, $03, 0 | PRIORITY
dbsprite 5, 2, 0, 1, $03, 0 | PRIORITY
dbsprite 6, 2, 0, 1, $03, 0 | PRIORITY
dbsprite 7, 2, 0, 1, $03, 0 | PRIORITY
dbsprite 8, 2, 0, 1, $03, 0 | PRIORITY
dbsprite 9, 2, 0, 1, $03, 0 | PRIORITY
dbsprite 0, 0, 0, 0, $00, 0 | OAM_PRIO
dbsprite 1, 0, 0, 0, $02, 0 | OAM_PRIO
dbsprite 2, 0, 0, 0, $02, 0 | OAM_PRIO
dbsprite 3, 0, 0, 0, $03, 0 | OAM_PRIO
dbsprite 4, 0, 0, 0, $02, 0 | OAM_PRIO
dbsprite 5, 0, 0, 0, $03, 0 | OAM_PRIO
dbsprite 6, 0, 0, 0, $02, 0 | OAM_PRIO
dbsprite 7, 0, 0, 0, $03, 0 | OAM_PRIO
dbsprite 8, 0, 0, 0, $02, 0 | OAM_PRIO
dbsprite 9, 0, 0, 0, $03, 0 | OAM_PRIO
dbsprite 0, 1, 0, 0, $01, 0 | OAM_PRIO
dbsprite 3, 1, 0, 0, $03, 0 | OAM_PRIO
dbsprite 5, 1, 0, 0, $03, 0 | OAM_PRIO
dbsprite 7, 1, 0, 0, $03, 0 | OAM_PRIO
dbsprite 9, 1, 0, 0, $03, 0 | OAM_PRIO
dbsprite 0, 2, 0, 0, $01, 0 | OAM_PRIO
dbsprite 3, 2, 0, 0, $03, 0 | OAM_PRIO
dbsprite 5, 2, 0, 0, $03, 0 | OAM_PRIO
dbsprite 7, 2, 0, 0, $03, 0 | OAM_PRIO
dbsprite 9, 2, 0, 0, $03, 0 | OAM_PRIO
dbsprite 0, 2, 0, 1, $00, 0 | OAM_YFLIP | OAM_PRIO
dbsprite 1, 2, 0, 1, $02, 0 | OAM_YFLIP | OAM_PRIO
dbsprite 2, 2, 0, 1, $02, 0 | OAM_YFLIP | OAM_PRIO
dbsprite 3, 2, 0, 1, $03, 0 | OAM_PRIO
dbsprite 4, 2, 0, 1, $03, 0 | OAM_PRIO
dbsprite 5, 2, 0, 1, $03, 0 | OAM_PRIO
dbsprite 6, 2, 0, 1, $03, 0 | OAM_PRIO
dbsprite 7, 2, 0, 1, $03, 0 | OAM_PRIO
dbsprite 8, 2, 0, 1, $03, 0 | OAM_PRIO
dbsprite 9, 2, 0, 1, $03, 0 | OAM_PRIO
.PokeGroupPair:
db 38
dbsprite -1, 0, 7, 0, $00, 0 | PRIORITY
dbsprite 3, 0, 0, 0, $00, 0 | X_FLIP | PRIORITY
dbsprite -1, 1, 7, 0, $01, 0 | PRIORITY
dbsprite 3, 1, 0, 0, $01, 0 | X_FLIP | PRIORITY
dbsprite -1, 2, 7, 0, $01, 0 | PRIORITY
dbsprite 3, 2, 0, 0, $01, 0 | X_FLIP | PRIORITY
dbsprite -1, 3, 7, 0, $01, 0 | PRIORITY
dbsprite 1, 3, 0, 0, $03, 0 | PRIORITY
dbsprite 3, 3, 0, 0, $03, 0 | PRIORITY
dbsprite -1, 4, 7, 0, $01, 0 | PRIORITY
dbsprite 1, 4, 0, 0, $03, 0 | PRIORITY
dbsprite 3, 4, 0, 0, $03, 0 | PRIORITY
dbsprite -1, 5, 7, 0, $01, 0 | PRIORITY
dbsprite 1, 5, 0, 0, $03, 0 | PRIORITY
dbsprite 3, 5, 0, 0, $03, 0 | PRIORITY
dbsprite -1, 6, 7, 0, $01, 0 | PRIORITY
dbsprite 1, 6, 0, 0, $03, 0 | PRIORITY
dbsprite 3, 6, 0, 0, $03, 0 | PRIORITY
dbsprite -1, 7, 7, 0, $01, 0 | PRIORITY
dbsprite 1, 7, 0, 0, $03, 0 | PRIORITY
dbsprite 3, 7, 0, 0, $03, 0 | PRIORITY
dbsprite -1, 8, 7, 0, $01, 0 | PRIORITY
dbsprite 1, 8, 0, 0, $03, 0 | PRIORITY
dbsprite 3, 8, 0, 0, $03, 0 | PRIORITY
dbsprite -1, 9, 7, 0, $01, 0 | PRIORITY
dbsprite 1, 9, 0, 0, $03, 0 | PRIORITY
dbsprite 3, 9, 0, 0, $03, 0 | PRIORITY
dbsprite -1, 10, 7, 0, $01, 0 | PRIORITY
dbsprite 1, 10, 0, 0, $03, 0 | PRIORITY
dbsprite 3, 10, 0, 0, $03, 0 | PRIORITY
dbsprite -1, 11, 7, 0, $01, 0 | PRIORITY
dbsprite 1, 11, 0, 0, $03, 0 | PRIORITY
dbsprite 3, 11, 0, 0, $03, 0 | PRIORITY
dbsprite -1, 11, 7, 1, $00, 0 | Y_FLIP | PRIORITY
dbsprite 0, 11, 0, 1, $02, 0 | Y_FLIP | PRIORITY
dbsprite 1, 11, 0, 1, $03, 0 | Y_FLIP | PRIORITY
dbsprite 2, 11, 0, 1, $02, 0 | Y_FLIP | PRIORITY
dbsprite 3, 11, 0, 1, $03, 0 | X_FLIP | Y_FLIP | PRIORITY
dbsprite -1, 0, 7, 0, $00, 0 | OAM_PRIO
dbsprite 3, 0, 0, 0, $00, 0 | OAM_XFLIP | OAM_PRIO
dbsprite -1, 1, 7, 0, $01, 0 | OAM_PRIO
dbsprite 3, 1, 0, 0, $01, 0 | OAM_XFLIP | OAM_PRIO
dbsprite -1, 2, 7, 0, $01, 0 | OAM_PRIO
dbsprite 3, 2, 0, 0, $01, 0 | OAM_XFLIP | OAM_PRIO
dbsprite -1, 3, 7, 0, $01, 0 | OAM_PRIO
dbsprite 1, 3, 0, 0, $03, 0 | OAM_PRIO
dbsprite 3, 3, 0, 0, $03, 0 | OAM_PRIO
dbsprite -1, 4, 7, 0, $01, 0 | OAM_PRIO
dbsprite 1, 4, 0, 0, $03, 0 | OAM_PRIO
dbsprite 3, 4, 0, 0, $03, 0 | OAM_PRIO
dbsprite -1, 5, 7, 0, $01, 0 | OAM_PRIO
dbsprite 1, 5, 0, 0, $03, 0 | OAM_PRIO
dbsprite 3, 5, 0, 0, $03, 0 | OAM_PRIO
dbsprite -1, 6, 7, 0, $01, 0 | OAM_PRIO
dbsprite 1, 6, 0, 0, $03, 0 | OAM_PRIO
dbsprite 3, 6, 0, 0, $03, 0 | OAM_PRIO
dbsprite -1, 7, 7, 0, $01, 0 | OAM_PRIO
dbsprite 1, 7, 0, 0, $03, 0 | OAM_PRIO
dbsprite 3, 7, 0, 0, $03, 0 | OAM_PRIO
dbsprite -1, 8, 7, 0, $01, 0 | OAM_PRIO
dbsprite 1, 8, 0, 0, $03, 0 | OAM_PRIO
dbsprite 3, 8, 0, 0, $03, 0 | OAM_PRIO
dbsprite -1, 9, 7, 0, $01, 0 | OAM_PRIO
dbsprite 1, 9, 0, 0, $03, 0 | OAM_PRIO
dbsprite 3, 9, 0, 0, $03, 0 | OAM_PRIO
dbsprite -1, 10, 7, 0, $01, 0 | OAM_PRIO
dbsprite 1, 10, 0, 0, $03, 0 | OAM_PRIO
dbsprite 3, 10, 0, 0, $03, 0 | OAM_PRIO
dbsprite -1, 11, 7, 0, $01, 0 | OAM_PRIO
dbsprite 1, 11, 0, 0, $03, 0 | OAM_PRIO
dbsprite 3, 11, 0, 0, $03, 0 | OAM_PRIO
dbsprite -1, 11, 7, 1, $00, 0 | OAM_YFLIP | OAM_PRIO
dbsprite 0, 11, 0, 1, $02, 0 | OAM_YFLIP | OAM_PRIO
dbsprite 1, 11, 0, 1, $03, 0 | OAM_YFLIP | OAM_PRIO
dbsprite 2, 11, 0, 1, $02, 0 | OAM_YFLIP | OAM_PRIO
dbsprite 3, 11, 0, 1, $03, 0 | OAM_XFLIP | OAM_YFLIP | OAM_PRIO
.Impossible:
db 4
dbsprite 0, 0, 0, 0, $00, 0 | PRIORITY
dbsprite 1, 0, 0, 0, $00, 0 | X_FLIP | PRIORITY
dbsprite 0, 1, 0, 0, $00, 0 | Y_FLIP | PRIORITY
dbsprite 1, 1, 0, 0, $00, 0 | X_FLIP | Y_FLIP | PRIORITY
dbsprite 0, 0, 0, 0, $00, 0 | OAM_PRIO
dbsprite 1, 0, 0, 0, $00, 0 | OAM_XFLIP | OAM_PRIO
dbsprite 0, 1, 0, 0, $00, 0 | OAM_YFLIP | OAM_PRIO
dbsprite 1, 1, 0, 0, $00, 0 | OAM_XFLIP | OAM_YFLIP | OAM_PRIO
CardFlip_InitAttrPals:
ldh a, [hCGB]
@ -1546,7 +1546,7 @@ CardFlip_InitAttrPals:
ret z
hlcoord 0, 0, wAttrmap
ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
ld bc, SCREEN_AREA
xor a
call ByteFill

View File

@ -24,7 +24,7 @@ _MemoryGame:
ld [hli], a
ld [hl], $00
hlcoord 0, 0
ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
ld bc, SCREEN_AREA
xor a
call ByteFill
xor a
@ -447,7 +447,7 @@ MemoryGame_DeleteCard:
MemoryGame_InitStrings:
hlcoord 0, 0
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld bc, SCREEN_AREA
ld a, $1
call ByteFill
hlcoord 0, 0

View File

@ -96,7 +96,7 @@ _SlotMachine:
ld hl, wOptions
res NO_TEXT_SCROLL, [hl]
ld hl, rLCDC
res rLCDC_SPRITE_SIZE, [hl] ; 8x8
res B_LCDC_OBJ_SIZE, [hl] ; 8x8
ret
.InitGFX:
@ -141,7 +141,7 @@ _SlotMachine:
call CopyBytes
ld hl, rLCDC
set rLCDC_SPRITE_SIZE, [hl] ; 8x16
set B_LCDC_OBJ_SIZE, [hl] ; 8x16
call EnableLCD
ld hl, wSlots
ld bc, wSlotsEnd - wSlots
@ -260,12 +260,12 @@ AnimateSlotReelIcons: ; unreferenced
and $7
ret nz
ld hl, wShadowOAMSprite16TileID
ld c, NUM_SPRITE_OAM_STRUCTS - 16
ld c, OAM_COUNT - 16
.loop
ld a, [hl]
xor $20 ; alternate between $00-$1f and $20-$3f
ld [hli], a ; tile id
rept SPRITEOAMSTRUCT_LENGTH - 1
rept OBJ_SIZE - 1
inc hl
endr
dec c
@ -826,7 +826,7 @@ Slots_UpdateReelPositionAndOAM:
ld [hli], a ; tile id
srl a
srl a
set OAM_PRIORITY, a
set B_OAM_PRIO, a
ld [hli], a ; attributes
ld a, [wCurReelYCoord]
@ -840,7 +840,7 @@ Slots_UpdateReelPositionAndOAM:
ld [hli], a ; tile id
srl a
srl a
set OAM_PRIORITY, a
set B_OAM_PRIO, a
ld [hli], a ; attributes
inc de
ld a, [wCurReelYCoord]

View File

@ -27,7 +27,7 @@ _UnownPuzzle:
call Decompress
call LoadUnownPuzzlePiecesGFX
hlcoord 0, 0
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld bc, SCREEN_AREA
ld a, PUZZLE_BORDER
call ByteFill
hlcoord 4, 3
@ -557,13 +557,13 @@ RedrawUnownPuzzlePieces:
.OAM_NotHoldingPiece:
dbsprite -1, -1, -4, -4, $00, 0
dbsprite 0, -1, -4, -4, $01, 0
dbsprite 0, -1, 4, -4, $00, 0 | X_FLIP
dbsprite 0, -1, 4, -4, $00, 0 | OAM_XFLIP
dbsprite -1, 0, -4, -4, $02, 0
dbsprite 0, 0, -4, -4, $03, 0
dbsprite 0, 0, 4, -4, $02, 0 | X_FLIP
dbsprite -1, 0, -4, 4, $00, 0 | Y_FLIP
dbsprite 0, 0, -4, 4, $01, 0 | Y_FLIP
dbsprite 0, 0, 4, 4, $00, 0 | X_FLIP | Y_FLIP
dbsprite 0, 0, 4, -4, $02, 0 | OAM_XFLIP
dbsprite -1, 0, -4, 4, $00, 0 | OAM_YFLIP
dbsprite 0, 0, -4, 4, $01, 0 | OAM_YFLIP
dbsprite 0, 0, 4, 4, $00, 0 | OAM_XFLIP | OAM_YFLIP
db -1
UnownPuzzleCoordData:

View File

@ -120,7 +120,7 @@ _CGB_FinishBattleScreenLayout:
ld bc, 1 palettes
call CopyBytes
hlcoord 0, 0, wAttrmap
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld bc, SCREEN_AREA
ld a, PAL_BATTLE_BG_ENEMY_HP
call ByteFill
hlcoord 0, 4, wAttrmap
@ -615,7 +615,7 @@ _CGB_TrainerCard:
; card border
hlcoord 0, 0, wAttrmap
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld bc, SCREEN_AREA
ld a, $1 ; falkner
call ByteFill
; trainer sprite area

View File

@ -450,7 +450,7 @@ LoadPalette_White_Col1_Col2_Black:
ld [de], a
inc de
ld c, 2 * PAL_COLOR_SIZE
ld c, 2 * COLOR_SIZE
.loop
ld a, [hli]
ld [de], a
@ -509,7 +509,7 @@ ResetBGPals:
WipeAttrmap:
hlcoord 0, 0, wAttrmap
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld bc, SCREEN_AREA
xor a
call ByteFill
ret
@ -523,7 +523,7 @@ ApplyPals:
ApplyAttrmap:
ldh a, [rLCDC]
bit rLCDC_ENABLE, a
bit B_LCDC_ENABLE, a
jr z, .UpdateVBank1
ldh a, [hBGMapMode]
push af
@ -551,7 +551,7 @@ ApplyAttrmap:
inc de
dec c
jr nz, .col
ld a, BG_MAP_WIDTH - SCREEN_WIDTH
ld a, TILEMAP_WIDTH - SCREEN_WIDTH
add e
jr nc, .okay
inc d
@ -647,7 +647,7 @@ CGBCopyBattleObjectPals: ; unreferenced
call CheckCGB
ret z
ld hl, BattleObjectPals
ld a, (1 << rOBPI_AUTO_INCREMENT) | $10
ld a, OBPI_AUTOINC | $10
ldh [rOBPI], a
ld c, 6 palettes
.loop
@ -667,7 +667,7 @@ INCLUDE "gfx/battle_anims/battle_anims.pal"
CGBCopyTwoPredefObjectPals: ; unreferenced
call CheckCGB
ret z
ld a, (1 << rOBPI_AUTO_INCREMENT) | $10
ld a, OBPI_AUTOINC | $10
ldh [rOBPI], a
ld a, PREDEFPAL_TRADE_TUBE
call GetPredefPal
@ -807,7 +807,7 @@ InitCGBPals::
call ByteFill
ld a, BANK(vTiles0)
ldh [rVBK], a
ld a, 1 << rBGPI_AUTO_INCREMENT
ld a, BGPI_AUTOINC
ldh [rBGPI], a
ld c, 4 * TILE_WIDTH
.bgpals_loop
@ -817,7 +817,7 @@ InitCGBPals::
ldh [rBGPD], a
dec c
jr nz, .bgpals_loop
ld a, 1 << rOBPI_AUTO_INCREMENT
ld a, OBPI_AUTOINC
ldh [rOBPI], a
ld c, 4 * TILE_WIDTH
.obpals_loop
@ -955,7 +955,7 @@ endr
SGBBorder_PushBGPals:
call DisableLCD
ld a, %11100100
ld a, BGP_SGB_TRANSFER
ldh [rBGP], a
ld hl, PredefPals
ld de, vTiles1
@ -972,7 +972,7 @@ SGBBorder_PushBGPals:
SGBBorder_MorePalPushing:
call DisableLCD
ld a, $e4
ld a, BGP_SGB_TRANSFER
ldh [rBGP], a
ld de, vTiles1
ld bc, (6 + SCREEN_WIDTH + 6) * 5 * 2
@ -1006,7 +1006,7 @@ SGBBorder_MorePalPushing:
SGBBorder_YetMorePalPushing:
call DisableLCD
ld a, %11100100
ld a, BGP_SGB_TRANSFER
ldh [rBGP], a
ld de, vTiles1
ld b, $80
@ -1055,7 +1055,7 @@ ClearBytes:
DrawDefaultTiles:
; Draw 240 tiles (2/3 of the screen) from tiles in VRAM
hlbgcoord 0, 0 ; BG Map 0
ld de, BG_MAP_WIDTH - SCREEN_WIDTH
ld de, TILEMAP_WIDTH - SCREEN_WIDTH
ld a, $80 ; starting tile
ld c, 12 + 1
.line
@ -1088,7 +1088,7 @@ INCLUDE "gfx/sgb/pal_packets.asm"
INCLUDE "data/sgb_ctrl_packets.asm"
PredefPals:
table_width PALETTE_SIZE
table_width PAL_SIZE
INCLUDE "gfx/sgb/predef.pal"
assert_table_length NUM_PREDEF_PALS
@ -1218,7 +1218,7 @@ MapObjectPals::
INCLUDE "gfx/overworld/npc_sprites.pal"
RoofPals:
table_width PAL_COLOR_SIZE * 2 * 2
table_width COLOR_SIZE * 2 * 2
INCLUDE "gfx/tilesets/roofs.pal"
assert_table_length NUM_MAP_GROUPS + 1

View File

@ -29,7 +29,7 @@ _LoadFontsBattleExtra::
LoadFrame:
ld a, [wTextboxFrame]
maskbits NUM_FRAMES
ld bc, TEXTBOX_FRAME_TILES * LEN_1BPP_TILE
ld bc, TEXTBOX_FRAME_TILES * TILE_1BPP_SIZE
ld hl, Frames
call AddNTimes
ld d, h
@ -79,7 +79,7 @@ StatsScreen_LoadFont::
ld hl, vTiles2 tile $78
lb bc, BANK(HPExpBarBorderGFX), 1
call Get1bpp
ld de, HPExpBarBorderGFX + 3 * LEN_1BPP_TILE
ld de, HPExpBarBorderGFX + 3 * TILE_1BPP_SIZE
ld hl, vTiles2 tile $76
lb bc, BANK(HPExpBarBorderGFX), 2
call Get1bpp

View File

@ -19,7 +19,7 @@ hTransferShadowOAM::
ld a, HIGH(wShadowOAM)
ldh [rDMA], a
; wait for DMA to finish
ld a, NUM_SPRITE_OAM_STRUCTS
ld a, OAM_COUNT
.wait
dec a
jr nz, .wait

View File

@ -1414,7 +1414,7 @@ Pack_GetItemName:
Pack_ClearTilemap: ; unreferenced
hlcoord 0, 0
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld bc, SCREEN_AREA
ld a, " "
call ByteFill
ret

View File

@ -49,17 +49,17 @@ Gen2ToGen1LinkComms:
call DelayFrames
xor a
ldh [hSerialSend], a
ld a, (0 << rSC_ON) | (1 << rSC_CLOCK)
ld a, SC_INTERNAL
ldh [rSC], a
ld a, (1 << rSC_ON) | (1 << rSC_CLOCK)
ld a, SC_START | SC_INTERNAL
ldh [rSC], a
call DelayFrame
xor a
ldh [hSerialSend], a
ld a, (0 << rSC_ON) | (1 << rSC_CLOCK)
ld a, SC_INTERNAL
ldh [rSC], a
ld a, (1 << rSC_ON) | (1 << rSC_CLOCK)
ld a, SC_START | SC_INTERNAL
ldh [rSC], a
.player_1
@ -75,7 +75,7 @@ endc
call DelayFrames
xor a
ldh [rIF], a
ld a, 1 << SERIAL
ld a, IE_SERIAL
ldh [rIE], a
ld hl, wLinkBattleRNPreamble
@ -102,7 +102,7 @@ endc
xor a
ldh [rIF], a
ld a, (1 << JOYPAD) | (1 << SERIAL) | (1 << TIMER) | (1 << VBLANK)
ld a, IE_JOYPAD | IE_SERIAL | IE_TIMER | IE_VBLANK
ldh [rIE], a
call Link_CopyRandomNumbers
@ -215,17 +215,17 @@ Gen2ToGen2LinkComms:
call DelayFrames
xor a
ldh [hSerialSend], a
ld a, (0 << rSC_ON) | (1 << rSC_CLOCK)
ld a, SC_INTERNAL
ldh [rSC], a
ld a, (1 << rSC_ON) | (1 << rSC_CLOCK)
ld a, SC_START | SC_INTERNAL
ldh [rSC], a
call DelayFrame
xor a
ldh [hSerialSend], a
ld a, (0 << rSC_ON) | (1 << rSC_CLOCK)
ld a, SC_INTERNAL
ldh [rSC], a
ld a, (1 << rSC_ON) | (1 << rSC_CLOCK)
ld a, SC_START | SC_INTERNAL
ldh [rSC], a
.player_1
@ -241,7 +241,7 @@ endc
call DelayFrames
xor a
ldh [rIF], a
ld a, 1 << SERIAL
ld a, IE_SERIAL
ldh [rIE], a
ld hl, wLinkBattleRNPreamble
@ -278,7 +278,7 @@ endc
xor a
ldh [rIF], a
ld a, (1 << JOYPAD) | (1 << SERIAL) | (1 << TIMER) | (1 << VBLANK)
ld a, IE_JOYPAD | IE_SERIAL | IE_TIMER | IE_VBLANK
ldh [rIE], a
ld de, MUSIC_NONE
call PlayMusic
@ -1493,9 +1493,9 @@ ExitLinkCommunications:
xor a
ldh [rSB], a
ldh [hSerialSend], a
ld a, (0 << rSC_ON) | (1 << rSC_CLOCK)
ld a, SC_INTERNAL
ldh [rSC], a
ld a, (1 << rSC_ON) | (1 << rSC_CLOCK)
ld a, SC_START | SC_INTERNAL
ldh [rSC], a
vc_hook ExitLinkCommunications_ret
ret
@ -2091,18 +2091,18 @@ WaitForOtherPlayerToExit:
xor a
ldh [rSB], a
ldh [hSerialReceive], a
ld a, (0 << rSC_ON) | (1 << rSC_CLOCK)
ld a, SC_INTERNAL
ldh [rSC], a
ld a, (1 << rSC_ON) | (1 << rSC_CLOCK)
ld a, SC_START | SC_INTERNAL
ldh [rSC], a
ld c, 3
call DelayFrames
xor a
ldh [rSB], a
ldh [hSerialReceive], a
ld a, (0 << rSC_ON) | (0 << rSC_CLOCK)
ld a, SC_EXTERNAL
ldh [rSC], a
ld a, (1 << rSC_ON) | (0 << rSC_CLOCK)
ld a, SC_START | SC_EXTERNAL
ldh [rSC], a
ld c, 3
call DelayFrames
@ -2140,9 +2140,9 @@ SetBitsForTimeCapsuleRequest:
ldh [rSB], a
xor a
ldh [hSerialReceive], a
ld a, (0 << rSC_ON) | (0 << rSC_CLOCK)
ld a, SC_EXTERNAL
ldh [rSC], a
ld a, (1 << rSC_ON) | (0 << rSC_CLOCK)
ld a, SC_START | SC_EXTERNAL
ldh [rSC], a
xor a ; LINK_NULL
ld [wPlayerLinkAction], a
@ -2157,9 +2157,9 @@ WaitForLinkedFriend:
ldh [rSB], a
xor a
ldh [hSerialReceive], a
ld a, (0 << rSC_ON) | (0 << rSC_CLOCK)
ld a, SC_EXTERNAL
ldh [rSC], a
ld a, (1 << rSC_ON) | (0 << rSC_CLOCK)
ld a, SC_START | SC_EXTERNAL
ldh [rSC], a
call DelayFrame
call DelayFrame
@ -2182,9 +2182,9 @@ WaitForLinkedFriend:
ldh [rSB], a
xor a
ldh [hSerialReceive], a
ld a, (0 << rSC_ON) | (0 << rSC_CLOCK)
ld a, SC_EXTERNAL
ldh [rSC], a
ld a, (1 << rSC_ON) | (0 << rSC_CLOCK)
ld a, SC_START | SC_EXTERNAL
; This vc_hook causes the Virtual Console to set [hSerialConnectionStatus] to
; USING_INTERNAL_CLOCK, which allows the player to proceed past the link
; receptionist's "Please wait." It assumes that hSerialConnectionStatus is at
@ -2207,9 +2207,9 @@ WaitForLinkedFriend:
.not_done
ld a, USING_EXTERNAL_CLOCK
ldh [rSB], a
ld a, (0 << rSC_ON) | (1 << rSC_CLOCK)
ld a, SC_INTERNAL
ldh [rSC], a
ld a, (1 << rSC_ON) | (1 << rSC_CLOCK)
ld a, SC_START | SC_INTERNAL
ldh [rSC], a
call DelayFrame
jr .loop

View File

@ -324,14 +324,14 @@ endc
jr c, .wait_frame
ld c, LOW(rRP)
ld a, rRP_ENABLE_READ_MASK
ld a, RP_ENABLE
ldh [c], a
ld b, 60 * 4 ; 4 seconds
.continue
push bc
call MysteryGift_UpdateJoypad
ld b, 1 << rRP_RECEIVING
ld b, RP_DATA_IN
ld c, LOW(rRP)
.in_vblank
ldh a, [c]
@ -536,7 +536,7 @@ EndOrContinueMysteryGiftIRCommunication:
xor a
ldh [rIF], a
ldh a, [rIE]
or 1 << VBLANK
or IE_VBLANK
ldh [rIE], a
ei
call DelayFrame
@ -580,7 +580,7 @@ TryReceivingIRDataBlock:
InitializeIRCommunicationInterrupts:
call StartFastIRTimer
ld a, 1 << TIMER
ld a, IE_TIMER
ldh [rIE], a
xor a
ldh [rIF], a
@ -602,9 +602,9 @@ StartFastIRTimer:
ld a, -2
ldh [rTMA], a
ldh [rTIMA], a
ld a, rTAC_65536_HZ
ld a, TAC_65KHZ
ldh [rTAC], a
or 1 << rTAC_ON
or TAC_START
ldh [rTAC], a
ret
@ -614,14 +614,14 @@ StartSlowIRTimer:
ldh [rTAC], a
ldh [rTMA], a
ldh [rTIMA], a
ld a, rTAC_65536_HZ
ld a, TAC_65KHZ
ldh [rTAC], a
or 1 << rTAC_ON
or TAC_START
ldh [rTAC], a
ret
BeginIRCommunication:
ld a, rRP_ENABLE_READ_MASK
ld a, RP_ENABLE
call ToggleIRCommunication
ld a, IR_RECEIVER
ldh [hMGRole], a
@ -630,7 +630,7 @@ BeginIRCommunication:
EndIRCommunication:
xor a
call ToggleIRCommunication
ld a, rTAC_65536_HZ
ld a, TAC_65KHZ
ldh [rTAC], a
ret
@ -644,7 +644,7 @@ ReceiveInfraredLEDOn:
halt
nop
ldh a, [c]
bit rRP_RECEIVING, a
bit B_RP_DATA_IN, a
jr z, .recv_loop
or a
ret
@ -659,14 +659,14 @@ ReceiveInfraredLEDOff:
halt
nop
ldh a, [c]
bit rRP_RECEIVING, a
bit B_RP_DATA_IN, a
jr nz, .no_recv_loop
or a
ret
SendInfraredLEDOn:
; Holds the IR LED on for d-1 interrupts.
ld a, rRP_ENABLE_READ_MASK | (1 << rRP_LED_ON)
ld a, RP_ENABLE | RP_LED_ON
ldh [c], a
.wait
dec d
@ -679,7 +679,7 @@ SendInfraredLEDOn:
SendInfraredLEDOff:
; Holds the IR LED off for d-1 interrupts.
ld a, rRP_ENABLE_READ_MASK
ld a, RP_ENABLE
ldh [c], a
.wait
dec d
@ -698,7 +698,7 @@ InitializeIRCommunicationRoles:
ldh [hMGRole], a
.loop
call MysteryGift_UpdateJoypad
ld b, 1 << rRP_RECEIVING
ld b, RP_DATA_IN
ld c, LOW(rRP)
; Check if we've pressed the B button to cancel
ldh a, [hMGJoypadReleased]
@ -885,7 +885,7 @@ SendIRDataMessage:
ldh [rIF], a
halt
nop
ld a, rRP_ENABLE_READ_MASK | (1 << rRP_LED_ON)
ld a, RP_ENABLE | RP_LED_ON
ldh [rRP], a
; Turn the LED off for longer if the bit is 1
ld d, 1
@ -898,7 +898,7 @@ SendIRDataMessage:
ldh a, [rTIMA]
cp -8
jr c, .wait
ld a, rRP_ENABLE_READ_MASK
ld a, RP_ENABLE
ldh [rRP], a
dec d
jr z, .no_halt
@ -1036,7 +1036,7 @@ ReceiveIRDataMessage:
inc d
jr z, .recv_done
ldh a, [c]
bit rRP_RECEIVING, a
bit B_RP_DATA_IN, a
jr z, .recv_loop
ld d, 0
.recv_done
@ -1044,7 +1044,7 @@ ReceiveIRDataMessage:
inc d
jr z, .send_done
ldh a, [c]
bit rRP_RECEIVING, a
bit B_RP_DATA_IN, a
jr nz, .send_loop
.send_done
ldh a, [hMGPrevTIMA]
@ -1102,7 +1102,7 @@ ReceiveEmptyIRDataBlock:
MysteryGift_UpdateJoypad:
; We can only get four inputs at a time.
; We take d-pad first for no particular reason.
ld a, 1 << rJOYP_DPAD
ld a, JOYP_GET_CTRL_PAD
ldh [rJOYP], a
; Read twice to give the request time to take.
ldh a, [rJOYP]
@ -1111,7 +1111,7 @@ MysteryGift_UpdateJoypad:
; The Joypad register output is in the lo nybble (inversed).
; We make the hi nybble of our new container d-pad input.
cpl
and $f
and JOYP_INPUTS
swap a
; We'll keep this in b for now.
@ -1119,7 +1119,7 @@ MysteryGift_UpdateJoypad:
; Buttons make 8 total inputs (A, B, Select, Start).
; We can fit this into one byte.
ld a, 1 << rJOYP_BUTTONS
ld a, JOYP_GET_BUTTONS
ldh [rJOYP], a
; Wait for input to stabilize.
rept 6
@ -1127,7 +1127,7 @@ rept 6
endr
; Buttons take the lo nybble.
cpl
and $f
and JOYP_INPUTS
or b
ld c, a
; To get the delta we xor the last frame's input with the new one.

View File

@ -65,7 +65,7 @@ InitMysteryGiftLayout:
call ByteFill
hlcoord 0, 0
ld a, $3d
ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
ld bc, SCREEN_AREA
call ByteFill
hlcoord 3, 7
lb bc, 9, 15

View File

@ -867,7 +867,7 @@ StartTitleScreen:
call ClearBGPalettes
ld hl, rLCDC
res rLCDC_SPRITE_SIZE, [hl] ; 8x8
res B_LCDC_OBJ_SIZE, [hl] ; 8x8
call ClearTilemap
xor a
ldh [hLCDCPointer], a

View File

@ -574,7 +574,7 @@ RestoreOverworldMapTiles:
call OpenSRAM
hlcoord 0, 0
ld de, sScratch
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld bc, SCREEN_AREA
call CopyBytes
call CloseSRAM
call LoadOverworldTilemapAndAttrmapPals
@ -582,7 +582,7 @@ RestoreOverworldMapTiles:
call OpenSRAM
ld hl, sScratch
decoord 0, 0
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld bc, SCREEN_AREA
.loop
ld a, [hl]
cp $61

View File

@ -240,7 +240,7 @@ NamingScreen_IsTargetBox:
NamingScreen_InitText:
call WaitTop
hlcoord 0, 0
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld bc, SCREEN_AREA
ld a, NAMINGSCREEN_BORDER
call ByteFill
hlcoord 1, 1

View File

@ -51,7 +51,7 @@ SaveMenu_CopyTilemapAtOnce:
ld l, 0
ld a, SCREEN_HEIGHT
ldh [hTilesPerCycle], a
ld b, 1 << 1 ; not in v/hblank
ld b, STAT_BUSY
ld c, LOW(rSTAT)
.loop
@ -69,7 +69,7 @@ rept SCREEN_WIDTH / 2
inc l
endr
ld de, BG_MAP_WIDTH - SCREEN_WIDTH
ld de, TILEMAP_WIDTH - SCREEN_WIDTH
add hl, de
ldh a, [hTilesPerCycle]
dec a

View File

@ -564,10 +564,10 @@ TrainerCard_Page2_3_OAMUpdate:
db -1
.facing2
dbsprite 0, 0, 0, 0, $01, 0 | X_FLIP
dbsprite 1, 0, 0, 0, $00, 0 | X_FLIP
dbsprite 0, 1, 0, 0, $03, 0 | X_FLIP
dbsprite 1, 1, 0, 0, $02, 0 | X_FLIP
dbsprite 0, 0, 0, 0, $01, 0 | OAM_XFLIP
dbsprite 1, 0, 0, 0, $00, 0 | OAM_XFLIP
dbsprite 0, 1, 0, 0, $03, 0 | OAM_XFLIP
dbsprite 1, 1, 0, 0, $02, 0 | OAM_XFLIP
db -1
TrainerCard_JohtoBadgesOAM:

View File

@ -395,7 +395,7 @@ ConstructCreditsTilemap:
ld a, $28
hlcoord 0, 0
ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
ld bc, SCREEN_AREA
call ByteFill
ld a, $7f

View File

@ -265,12 +265,12 @@ EvolutionAnimation:
and $7
ld b, a
ld hl, wShadowOAMSprite00Attributes
ld c, NUM_SPRITE_OAM_STRUCTS
ld c, OAM_COUNT
.loop6
ld a, [hl]
or b
ld [hli], a ; attributes
rept SPRITEOAMSTRUCT_LENGTH - 1
rept OBJ_SIZE - 1
inc hl
endr
dec c

View File

@ -10,7 +10,7 @@ InitDisplayForHallOfFame:
ld a, " "
call ByteFill
hlcoord 0, 0, wAttrmap
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld bc, SCREEN_AREA
xor a
call ByteFill
xor a
@ -39,7 +39,7 @@ InitDisplayForRedCredits:
ld a, " "
call ByteFill
hlcoord 0, 0, wAttrmap
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld bc, SCREEN_AREA
xor a
call ByteFill
ld hl, wBGPals1

View File

@ -434,7 +434,7 @@ Intro_UpdateTilemapAndBGMap:
ld e, a
ld a, [wIntroTilemapPointer + 1]
ld d, a
ld hl, -BG_MAP_WIDTH / 2
ld hl, -TILEMAP_WIDTH / 2
add hl, de
ld a, l
ld e, l
@ -444,7 +444,7 @@ Intro_UpdateTilemapAndBGMap:
ld [wIntroTilemapPointer + 1], a
hlcoord 0, 0
ld c, BG_MAP_WIDTH / 2
ld c, TILEMAP_WIDTH / 2
.loop
call Intro_Draw2x2Tiles
dec c
@ -454,7 +454,7 @@ Intro_UpdateTilemapAndBGMap:
ld e, a
ld a, [wIntroBGMapPointer + 1]
ld d, a
ld hl, -2 * BG_MAP_WIDTH
ld hl, -2 * TILEMAP_WIDTH
add hl, de
ld a, l
ld [wIntroBGMapPointer + 0], a
@ -1171,17 +1171,17 @@ Copy128Tiles: ; unreferenced
ret
Intro_DrawBackground:
ld b, BG_MAP_WIDTH / 2
ld b, TILEMAP_WIDTH / 2
.outer_loop
push hl
ld c, BG_MAP_HEIGHT / 2
ld c, TILEMAP_HEIGHT / 2
.inner_loop
call Intro_Draw2x2Tiles
dec c
jr nz, .inner_loop
pop hl
push bc
ld bc, 2 * BG_MAP_WIDTH
ld bc, 2 * TILEMAP_WIDTH
add hl, bc
pop bc
dec b
@ -1216,7 +1216,7 @@ Intro_Draw2x2Tiles:
inc de
ld [hli], a
pop hl
ld bc, BG_MAP_WIDTH
ld bc, TILEMAP_WIDTH
add hl, bc
ld a, [de]
inc de

View File

@ -57,7 +57,7 @@ TitleScreen:
ld [hli], a
ld [hl], a
ld hl, rLCDC
set rLCDC_SPRITE_SIZE, [hl]
set B_LCDC_OBJ_SIZE, [hl]
call EnableLCD
; Reset timing variables
@ -147,7 +147,7 @@ FillTitleScreenPals:
ld a, 1
ldh [rVBK], a
hlbgcoord 0, 0
ld bc, 18 * BG_MAP_WIDTH
ld bc, 18 * TILEMAP_WIDTH
xor a
call ByteFill
hlbgcoord 0, 0, vBGMap2
@ -159,7 +159,7 @@ FillTitleScreenPals:
ld a, 3
call DrawTitleGraphic
hlbgcoord 0, 12, vBGMap2
ld bc, 5 * BG_MAP_WIDTH
ld bc, 5 * TILEMAP_WIDTH
ld a, 4
call ByteFill
ld a, 0
@ -175,7 +175,7 @@ DrawTitleGraphic:
dec c
jr nz, .col
pop hl
ld bc, BG_MAP_WIDTH
ld bc, TILEMAP_WIDTH
add hl, bc
pop bc
dec b
@ -200,7 +200,7 @@ LoadTitleScreenTilemap:
and a
ret nz
hlbgcoord 0, 11
ld bc, BG_MAP_WIDTH
ld bc, TILEMAP_WIDTH
ld a, "@"
call ByteFill
ret

View File

@ -1214,7 +1214,7 @@ TradeAnim_Wait80Frames:
TradeAnim_BlankTilemap:
hlcoord 0, 0
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld bc, SCREEN_AREA
ld a, " "
call ByteFill
ret

View File

@ -2309,7 +2309,7 @@ CheckObjectCoveredByTextbox:
srl a
cp SCREEN_WIDTH
jr c, .ok3
sub BG_MAP_WIDTH
sub TILEMAP_WIDTH
.ok3
ldh [hCurSpriteXCoord], a
@ -2342,7 +2342,7 @@ CheckObjectCoveredByTextbox:
srl a
cp SCREEN_HEIGHT
jr c, .ok6
sub BG_MAP_HEIGHT
sub TILEMAP_HEIGHT
.ok6
ldh [hCurSpriteYCoord], a
@ -2684,13 +2684,13 @@ _UpdateSprites::
ret
.fill
ld b, NUM_SPRITE_OAM_STRUCTS * SPRITEOAMSTRUCT_LENGTH
ld b, OAM_SIZE
ldh a, [hUsedSpriteIndex]
cp b
ret nc
ld l, a
ld h, HIGH(wShadowOAM)
ld de, SPRITEOAMSTRUCT_LENGTH
ld de, OBJ_SIZE
ld a, b
ld c, OAM_YCOORD_HIDDEN
.loop
@ -2833,23 +2833,23 @@ InitSprites:
ld e, [hl]
bit OBJ_FLAGS2_7_F, e
jr z, .not_priority
or PRIORITY
or OAM_PRIO
.not_priority
bit USE_OBP1_F, e
jr z, .not_obp_num
or OBP_NUM
or OAM_PAL1
.not_obp_num
ld hl, OBJECT_PALETTE
add hl, bc
ld d, a
ld a, [hl]
and PALETTE_MASK
and OAM_PALETTE
or d
ld d, a
xor a
bit OVERHEAD_F, e
jr z, .not_overhead
or PRIORITY
or OAM_PRIO
.not_overhead
ldh [hCurSpriteOAMFlags], a
ld hl, OBJECT_SPRITE_TILE
@ -2929,7 +2929,7 @@ InitSprites:
ldh a, [hCurSpriteOAMFlags]
or e
.nope2
and OBP_NUM | X_FLIP | Y_FLIP | PRIORITY
and OAM_PAL1 | OAM_XFLIP | OAM_YFLIP | OAM_PRIO
or d
ld [bc], a ; attributes
inc c

View File

@ -68,7 +68,7 @@ WillObjectBumpIntoWater:
ld e, [hl]
ld hl, OBJECT_PALETTE
add hl, bc
bit OAM_PRIORITY, [hl]
bit B_OAM_PRIO, [hl]
jp nz, WillObjectRemainOnWater
ld hl, OBJECT_TILE_COLLISION
add hl, bc

View File

@ -190,7 +190,7 @@ CopyMapObjectToObjectStruct:
and MAPOBJECT_PALETTE_MASK
jr z, .skip_color_override
swap a
and PALETTE_MASK
and OAM_PALETTE
ld [wTempObjectCopyPalette], a
.skip_color_override

View File

@ -145,7 +145,7 @@ UpdateOverworldMap:
.ScrollOverworldMapDown:
ld a, [wBGMapAnchor]
add 2 * BG_MAP_WIDTH
add 2 * TILEMAP_WIDTH
ld [wBGMapAnchor], a
jr nc, .not_overflowed
ld a, [wBGMapAnchor + 1]
@ -176,7 +176,7 @@ UpdateOverworldMap:
.ScrollOverworldMapUp:
ld a, [wBGMapAnchor]
sub 2 * BG_MAP_WIDTH
sub 2 * TILEMAP_WIDTH
ld [wBGMapAnchor], a
jr nc, .not_underflowed
ld a, [wBGMapAnchor + 1]

View File

@ -30,7 +30,7 @@ FindNest:
; e: 0 = Johto, 1 = Kanto
; wNamedObjectIndex: species
hlcoord 0, 0
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld bc, SCREEN_AREA
xor a
call ByteFill
ld a, e
@ -123,7 +123,7 @@ FindNest:
call GetWorldMapLocation
ld c, a
hlcoord 0, 0
ld de, SCREEN_WIDTH * SCREEN_HEIGHT
ld de, SCREEN_AREA
.AppendNestLoop:
ld a, [hli]
cp c

View File

@ -54,7 +54,7 @@ PhoneRing_CopyTilemapAtOnce:
ld l, 0
ld a, SCREEN_HEIGHT
ldh [hTilesPerCycle], a
ld b, 1 << 1 ; not in v/hblank
ld b, STAT_BUSY
ld c, LOW(rSTAT)
.loop
@ -72,7 +72,7 @@ rept SCREEN_WIDTH / 2
inc l
endr
ld de, BG_MAP_WIDTH - SCREEN_WIDTH
ld de, TILEMAP_WIDTH - SCREEN_WIDTH
add hl, de
ldh a, [hTilesPerCycle]
dec a

View File

@ -219,7 +219,7 @@ Pokedex_InitMainScreen:
call ClearSprites
xor a
hlcoord 0, 0, wAttrmap
ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
ld bc, SCREEN_AREA
call ByteFill
farcall DrawPokedexListWindow
hlcoord 0, 17
@ -721,7 +721,7 @@ Pokedex_InitSearchResultsScreen:
ldh [hBGMapMode], a
xor a
hlcoord 0, 0, wAttrmap
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld bc, SCREEN_AREA
call ByteFill
call Pokedex_SetBGMapMode4
call Pokedex_ResetBGMapMode
@ -1076,7 +1076,7 @@ Pokedex_DrawMainScreenBG:
call Pokedex_PlaceString
ld a, $32
hlcoord 0, 0
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld bc, SCREEN_AREA
call ByteFill
hlcoord 0, 0
lb bc, 7, 7
@ -1379,7 +1379,7 @@ UnownModeLetterAndCursorCoords:
Pokedex_FillBackgroundColor2:
hlcoord 0, 0
ld a, $32
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld bc, SCREEN_AREA
call ByteFill
ret
@ -1995,24 +1995,24 @@ Pokedex_PutOldModeCursorOAM:
dbsprite 11, 2, -1, 0, $32, 7
dbsprite 12, 2, -1, 0, $32, 7
dbsprite 13, 2, -1, 0, $33, 7
dbsprite 16, 2, -2, 0, $33, 7 | X_FLIP
dbsprite 17, 2, -2, 0, $32, 7 | X_FLIP
dbsprite 18, 2, -2, 0, $32, 7 | X_FLIP
dbsprite 19, 2, -2, 0, $32, 7 | X_FLIP
dbsprite 20, 2, -2, 0, $31, 7 | X_FLIP
dbsprite 20, 3, -2, 0, $30, 7 | X_FLIP
dbsprite 9, 4, -1, 0, $30, 7 | Y_FLIP
dbsprite 9, 5, -1, 0, $31, 7 | Y_FLIP
dbsprite 10, 5, -1, 0, $32, 7 | Y_FLIP
dbsprite 11, 5, -1, 0, $32, 7 | Y_FLIP
dbsprite 12, 5, -1, 0, $32, 7 | Y_FLIP
dbsprite 13, 5, -1, 0, $33, 7 | Y_FLIP
dbsprite 16, 5, -2, 0, $33, 7 | X_FLIP | Y_FLIP
dbsprite 17, 5, -2, 0, $32, 7 | X_FLIP | Y_FLIP
dbsprite 18, 5, -2, 0, $32, 7 | X_FLIP | Y_FLIP
dbsprite 19, 5, -2, 0, $32, 7 | X_FLIP | Y_FLIP
dbsprite 20, 5, -2, 0, $31, 7 | X_FLIP | Y_FLIP
dbsprite 20, 4, -2, 0, $30, 7 | X_FLIP | Y_FLIP
dbsprite 16, 2, -2, 0, $33, 7 | OAM_XFLIP
dbsprite 17, 2, -2, 0, $32, 7 | OAM_XFLIP
dbsprite 18, 2, -2, 0, $32, 7 | OAM_XFLIP
dbsprite 19, 2, -2, 0, $32, 7 | OAM_XFLIP
dbsprite 20, 2, -2, 0, $31, 7 | OAM_XFLIP
dbsprite 20, 3, -2, 0, $30, 7 | OAM_XFLIP
dbsprite 9, 4, -1, 0, $30, 7 | OAM_YFLIP
dbsprite 9, 5, -1, 0, $31, 7 | OAM_YFLIP
dbsprite 10, 5, -1, 0, $32, 7 | OAM_YFLIP
dbsprite 11, 5, -1, 0, $32, 7 | OAM_YFLIP
dbsprite 12, 5, -1, 0, $32, 7 | OAM_YFLIP
dbsprite 13, 5, -1, 0, $33, 7 | OAM_YFLIP
dbsprite 16, 5, -2, 0, $33, 7 | OAM_XFLIP | OAM_YFLIP
dbsprite 17, 5, -2, 0, $32, 7 | OAM_XFLIP | OAM_YFLIP
dbsprite 18, 5, -2, 0, $32, 7 | OAM_XFLIP | OAM_YFLIP
dbsprite 19, 5, -2, 0, $32, 7 | OAM_XFLIP | OAM_YFLIP
dbsprite 20, 5, -2, 0, $31, 7 | OAM_XFLIP | OAM_YFLIP
dbsprite 20, 4, -2, 0, $30, 7 | OAM_XFLIP | OAM_YFLIP
db -1
.CursorAtTopOAM:
@ -2024,24 +2024,24 @@ Pokedex_PutOldModeCursorOAM:
dbsprite 11, 2, -1, 0, $35, 7
dbsprite 12, 2, -1, 0, $35, 7
dbsprite 13, 2, -1, 0, $36, 7
dbsprite 16, 2, -2, 0, $36, 7 | X_FLIP
dbsprite 17, 2, -2, 0, $35, 7 | X_FLIP
dbsprite 18, 2, -2, 0, $35, 7 | X_FLIP
dbsprite 19, 2, -2, 0, $35, 7 | X_FLIP
dbsprite 20, 2, -2, 0, $34, 7 | X_FLIP
dbsprite 20, 3, -2, 0, $30, 7 | X_FLIP
dbsprite 9, 4, -1, 0, $30, 7 | Y_FLIP
dbsprite 9, 5, -1, 0, $31, 7 | Y_FLIP
dbsprite 10, 5, -1, 0, $32, 7 | Y_FLIP
dbsprite 11, 5, -1, 0, $32, 7 | Y_FLIP
dbsprite 12, 5, -1, 0, $32, 7 | Y_FLIP
dbsprite 13, 5, -1, 0, $33, 7 | Y_FLIP
dbsprite 16, 5, -2, 0, $33, 7 | X_FLIP | Y_FLIP
dbsprite 17, 5, -2, 0, $32, 7 | X_FLIP | Y_FLIP
dbsprite 18, 5, -2, 0, $32, 7 | X_FLIP | Y_FLIP
dbsprite 19, 5, -2, 0, $32, 7 | X_FLIP | Y_FLIP
dbsprite 20, 5, -2, 0, $31, 7 | X_FLIP | Y_FLIP
dbsprite 20, 4, -2, 0, $30, 7 | X_FLIP | Y_FLIP
dbsprite 16, 2, -2, 0, $36, 7 | OAM_XFLIP
dbsprite 17, 2, -2, 0, $35, 7 | OAM_XFLIP
dbsprite 18, 2, -2, 0, $35, 7 | OAM_XFLIP
dbsprite 19, 2, -2, 0, $35, 7 | OAM_XFLIP
dbsprite 20, 2, -2, 0, $34, 7 | OAM_XFLIP
dbsprite 20, 3, -2, 0, $30, 7 | OAM_XFLIP
dbsprite 9, 4, -1, 0, $30, 7 | OAM_YFLIP
dbsprite 9, 5, -1, 0, $31, 7 | OAM_YFLIP
dbsprite 10, 5, -1, 0, $32, 7 | OAM_YFLIP
dbsprite 11, 5, -1, 0, $32, 7 | OAM_YFLIP
dbsprite 12, 5, -1, 0, $32, 7 | OAM_YFLIP
dbsprite 13, 5, -1, 0, $33, 7 | OAM_YFLIP
dbsprite 16, 5, -2, 0, $33, 7 | OAM_XFLIP | OAM_YFLIP
dbsprite 17, 5, -2, 0, $32, 7 | OAM_XFLIP | OAM_YFLIP
dbsprite 18, 5, -2, 0, $32, 7 | OAM_XFLIP | OAM_YFLIP
dbsprite 19, 5, -2, 0, $32, 7 | OAM_XFLIP | OAM_YFLIP
dbsprite 20, 5, -2, 0, $31, 7 | OAM_XFLIP | OAM_YFLIP
dbsprite 20, 4, -2, 0, $30, 7 | OAM_XFLIP | OAM_YFLIP
db -1
Pokedex_PutNewModeABCModeCursorOAM:
@ -2055,21 +2055,21 @@ Pokedex_PutNewModeABCModeCursorOAM:
dbsprite 10, 2, -1, 3, $32, 7
dbsprite 11, 2, -1, 3, $32, 7
dbsprite 12, 2, -1, 3, $33, 7
dbsprite 16, 2, 0, 3, $33, 7 | X_FLIP
dbsprite 17, 2, 0, 3, $32, 7 | X_FLIP
dbsprite 18, 2, 0, 3, $32, 7 | X_FLIP
dbsprite 19, 2, 0, 3, $31, 7 | X_FLIP
dbsprite 19, 3, 0, 3, $30, 7 | X_FLIP
dbsprite 9, 4, -1, 3, $30, 7 | Y_FLIP
dbsprite 9, 5, -1, 3, $31, 7 | Y_FLIP
dbsprite 10, 5, -1, 3, $32, 7 | Y_FLIP
dbsprite 11, 5, -1, 3, $32, 7 | Y_FLIP
dbsprite 12, 5, -1, 3, $33, 7 | Y_FLIP
dbsprite 16, 5, 0, 3, $33, 7 | X_FLIP | Y_FLIP
dbsprite 17, 5, 0, 3, $32, 7 | X_FLIP | Y_FLIP
dbsprite 18, 5, 0, 3, $32, 7 | X_FLIP | Y_FLIP
dbsprite 19, 5, 0, 3, $31, 7 | X_FLIP | Y_FLIP
dbsprite 19, 4, 0, 3, $30, 7 | X_FLIP | Y_FLIP
dbsprite 16, 2, 0, 3, $33, 7 | OAM_XFLIP
dbsprite 17, 2, 0, 3, $32, 7 | OAM_XFLIP
dbsprite 18, 2, 0, 3, $32, 7 | OAM_XFLIP
dbsprite 19, 2, 0, 3, $31, 7 | OAM_XFLIP
dbsprite 19, 3, 0, 3, $30, 7 | OAM_XFLIP
dbsprite 9, 4, -1, 3, $30, 7 | OAM_YFLIP
dbsprite 9, 5, -1, 3, $31, 7 | OAM_YFLIP
dbsprite 10, 5, -1, 3, $32, 7 | OAM_YFLIP
dbsprite 11, 5, -1, 3, $32, 7 | OAM_YFLIP
dbsprite 12, 5, -1, 3, $33, 7 | OAM_YFLIP
dbsprite 16, 5, 0, 3, $33, 7 | OAM_XFLIP | OAM_YFLIP
dbsprite 17, 5, 0, 3, $32, 7 | OAM_XFLIP | OAM_YFLIP
dbsprite 18, 5, 0, 3, $32, 7 | OAM_XFLIP | OAM_YFLIP
dbsprite 19, 5, 0, 3, $31, 7 | OAM_XFLIP | OAM_YFLIP
dbsprite 19, 4, 0, 3, $30, 7 | OAM_XFLIP | OAM_YFLIP
db -1
Pokedex_UpdateSearchResultsCursorOAM:
@ -2087,24 +2087,24 @@ Pokedex_UpdateSearchResultsCursorOAM:
dbsprite 11, 2, -1, 3, $32, 7
dbsprite 12, 2, -1, 3, $32, 7
dbsprite 13, 2, -1, 3, $33, 7
dbsprite 16, 2, -2, 3, $33, 7 | X_FLIP
dbsprite 17, 2, -2, 3, $32, 7 | X_FLIP
dbsprite 18, 2, -2, 3, $32, 7 | X_FLIP
dbsprite 19, 2, -2, 3, $32, 7 | X_FLIP
dbsprite 20, 2, -2, 3, $31, 7 | X_FLIP
dbsprite 20, 3, -2, 3, $30, 7 | X_FLIP
dbsprite 9, 4, -1, 3, $30, 7 | Y_FLIP
dbsprite 9, 5, -1, 3, $31, 7 | Y_FLIP
dbsprite 10, 5, -1, 3, $32, 7 | Y_FLIP
dbsprite 11, 5, -1, 3, $32, 7 | Y_FLIP
dbsprite 12, 5, -1, 3, $32, 7 | Y_FLIP
dbsprite 13, 5, -1, 3, $33, 7 | Y_FLIP
dbsprite 16, 5, -2, 3, $33, 7 | X_FLIP | Y_FLIP
dbsprite 17, 5, -2, 3, $32, 7 | X_FLIP | Y_FLIP
dbsprite 18, 5, -2, 3, $32, 7 | X_FLIP | Y_FLIP
dbsprite 19, 5, -2, 3, $32, 7 | X_FLIP | Y_FLIP
dbsprite 20, 5, -2, 3, $31, 7 | X_FLIP | Y_FLIP
dbsprite 20, 4, -2, 3, $30, 7 | X_FLIP | Y_FLIP
dbsprite 16, 2, -2, 3, $33, 7 | OAM_XFLIP
dbsprite 17, 2, -2, 3, $32, 7 | OAM_XFLIP
dbsprite 18, 2, -2, 3, $32, 7 | OAM_XFLIP
dbsprite 19, 2, -2, 3, $32, 7 | OAM_XFLIP
dbsprite 20, 2, -2, 3, $31, 7 | OAM_XFLIP
dbsprite 20, 3, -2, 3, $30, 7 | OAM_XFLIP
dbsprite 9, 4, -1, 3, $30, 7 | OAM_YFLIP
dbsprite 9, 5, -1, 3, $31, 7 | OAM_YFLIP
dbsprite 10, 5, -1, 3, $32, 7 | OAM_YFLIP
dbsprite 11, 5, -1, 3, $32, 7 | OAM_YFLIP
dbsprite 12, 5, -1, 3, $32, 7 | OAM_YFLIP
dbsprite 13, 5, -1, 3, $33, 7 | OAM_YFLIP
dbsprite 16, 5, -2, 3, $33, 7 | OAM_XFLIP | OAM_YFLIP
dbsprite 17, 5, -2, 3, $32, 7 | OAM_XFLIP | OAM_YFLIP
dbsprite 18, 5, -2, 3, $32, 7 | OAM_XFLIP | OAM_YFLIP
dbsprite 19, 5, -2, 3, $32, 7 | OAM_XFLIP | OAM_YFLIP
dbsprite 20, 5, -2, 3, $31, 7 | OAM_XFLIP | OAM_YFLIP
dbsprite 20, 4, -2, 3, $30, 7 | OAM_XFLIP | OAM_YFLIP
db -1
Pokedex_LoadCursorOAM:

View File

@ -233,7 +233,7 @@ InitPokegearTilemap:
xor a
ldh [hBGMapMode], a
hlcoord 0, 0
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld bc, SCREEN_AREA
ld a, $4f
call ByteFill
ld a, [wPokegearCard]
@ -2598,7 +2598,7 @@ TownMapPals:
; Assign palettes based on tile ids
hlcoord 0, 0
decoord 0, 0, wAttrmap
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld bc, SCREEN_AREA
.loop
; Current tile
ld a, [hli]
@ -2618,7 +2618,7 @@ TownMapPals:
adc 0
ld h, a
ld a, [hl]
and PALETTE_MASK
and OAM_PALETTE
jr .update
.odd
@ -2630,7 +2630,7 @@ TownMapPals:
ld h, a
ld a, [hl]
swap a
and PALETTE_MASK
and OAM_PALETTE
jr .update
.pal0

View File

@ -1457,7 +1457,7 @@ BillsPC_UpdateSelectionCursor:
inc hl
ld [de], a ; y
inc de
rept SPRITEOAMSTRUCT_LENGTH - 1
rept OBJ_SIZE - 1
ld a, [hli]
ld [de], a
inc de
@ -1501,7 +1501,7 @@ BillsPC_UpdateInsertCursor:
inc hl
ld [de], a ; y
inc de
rept SPRITEOAMSTRUCT_LENGTH - 1
rept OBJ_SIZE - 1
ld a, [hli]
ld [de], a
inc de
@ -2229,7 +2229,7 @@ BillsPC_ClearTilemap:
xor a
ldh [hBGMapMode], a
hlcoord 0, 0
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld bc, SCREEN_AREA
ld a, " "
call ByteFill
ret

View File

@ -235,7 +235,7 @@ ClearPCItemScreen:
call ClearBGPalettes
call ClearSprites
hlcoord 0, 0
ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
ld bc, SCREEN_AREA
ld a, " "
call ByteFill
hlcoord 0, 0

View File

@ -634,7 +634,7 @@ Hatch_UpdateFrontpicBGMapCenter:
push hl
push bc
hlcoord 0, 0
ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
ld bc, SCREEN_AREA
ld a, " "
call ByteFill
pop bc

View File

@ -132,13 +132,13 @@ LoadSurfMailGFX:
push bc
ld hl, vTiles2 tile $31
ld de, SurfMailBorderGFX
ld c, 8 * LEN_1BPP_TILE
ld c, 8 * TILE_1BPP_SIZE
call LoadMailGFX_Color2
ld de, MailLaprasGFX
ld c, 6 * LEN_1BPP_TILE
ld c, 6 * TILE_1BPP_SIZE
call LoadMailGFX_Color3
ld de, SurfMailWaveGFX
ld c, 1 * LEN_1BPP_TILE
ld c, 1 * TILE_1BPP_SIZE
call LoadMailGFX_Color2
jr FinishLoadingSurfLiteBlueMailGFX
@ -146,25 +146,25 @@ LoadLiteBlueMailGFX:
push bc
ld hl, vTiles2 tile $31
ld de, LiteBlueMailBorderGFX
ld c, 8 * LEN_1BPP_TILE
ld c, 8 * TILE_1BPP_SIZE
call LoadMailGFX_Color2
ld de, MailDratiniGFX
ld c, 6 * LEN_1BPP_TILE
ld c, 6 * TILE_1BPP_SIZE
call LoadMailGFX_Color3
ld de, PortraitMailUnderlineGFX
ld c, 1 * LEN_1BPP_TILE
ld c, 1 * TILE_1BPP_SIZE
call LoadMailGFX_Color2
FinishLoadingSurfLiteBlueMailGFX:
ld de, SurfLiteBlueMailSmallShapesGFX
ld c, 2 * LEN_1BPP_TILE
ld c, 2 * TILE_1BPP_SIZE
call LoadMailGFX_Color2
ld c, 2 * LEN_1BPP_TILE
ld c, 2 * TILE_1BPP_SIZE
call LoadMailGFX_Color1
ld de, SurfLiteBlueMailLargeShapesGFX
ld c, 8 * LEN_1BPP_TILE
ld c, 8 * TILE_1BPP_SIZE
call LoadMailGFX_Color1
ld c, 8 * LEN_1BPP_TILE
ld c, 8 * TILE_1BPP_SIZE
call LoadMailGFX_Color2
call DrawMailBorder
@ -216,29 +216,29 @@ LoadEonMailGFX:
push bc
ld hl, vTiles2 tile $31
ld de, EonMailBorder1GFX
ld c, 1 * LEN_1BPP_TILE
ld c, 1 * TILE_1BPP_SIZE
call LoadMailGFX_Color2
ld de, EonMailBorder2GFX
ld c, 1 * LEN_1BPP_TILE
ld c, 1 * TILE_1BPP_SIZE
call LoadMailGFX_Color1
ld de, EonMailBorder2GFX
ld c, 1 * LEN_1BPP_TILE
ld c, 1 * TILE_1BPP_SIZE
call LoadMailGFX_Color1
ld de, EonMailBorder1GFX
ld c, 1 * LEN_1BPP_TILE
ld c, 1 * TILE_1BPP_SIZE
call LoadMailGFX_Color2
ld de, SurfMailBorderGFX + 6 * LEN_1BPP_TILE
ld c, 1 * LEN_1BPP_TILE
ld de, SurfMailBorderGFX + 6 * TILE_1BPP_SIZE
ld c, 1 * TILE_1BPP_SIZE
call LoadMailGFX_Color2
ld de, MailEeveeGFX
ld c, 6 * LEN_1BPP_TILE
ld c, 6 * TILE_1BPP_SIZE
call LoadMailGFX_Color3
ld hl, vTiles2 tile $3d
ld de, MailLargeCircleGFX
ld c, 4 * LEN_1BPP_TILE
ld c, 4 * TILE_1BPP_SIZE
call LoadMailGFX_Color1
ld de, EonMailBorder2GFX
ld c, 1 * LEN_1BPP_TILE
ld c, 1 * TILE_1BPP_SIZE
call LoadMailGFX_Color2
ld a, $31
@ -265,19 +265,19 @@ LoadLovelyMailGFX:
push bc
ld hl, vTiles2 tile $31
ld de, LovelyMailBorderGFX
ld c, 5 * LEN_1BPP_TILE
ld c, 5 * TILE_1BPP_SIZE
call LoadMailGFX_Color2
ld de, MailPoliwagGFX
ld c, 6 * LEN_1BPP_TILE
ld c, 6 * TILE_1BPP_SIZE
call LoadMailGFX_Color3
ld de, LovelyMailUnderlineGFX
ld c, 1 * LEN_1BPP_TILE
ld c, 1 * TILE_1BPP_SIZE
call LoadMailGFX_Color2
ld de, LovelyMailLargeHeartGFX
ld c, 4 * LEN_1BPP_TILE
ld c, 4 * TILE_1BPP_SIZE
call LoadMailGFX_Color2
ld de, LovelyMailSmallHeartGFX
ld c, 1 * LEN_1BPP_TILE
ld c, 1 * TILE_1BPP_SIZE
call LoadMailGFX_Color1
call DrawMailBorder2
@ -325,25 +325,25 @@ LovelyEonMail_PlaceIcons:
LoadMorphMailGFX:
push bc
ld hl, vTiles2 tile $31
ld bc, 5 * LEN_1BPP_TILE
ld bc, 5 * TILE_1BPP_SIZE
call MailGFX_GenerateMonochromeTilesColor2
ld de, MorphMailBorderCornerGFX + 3 * LEN_1BPP_TILE
ld c, 1 * LEN_1BPP_TILE
ld de, MorphMailBorderCornerGFX + 3 * TILE_1BPP_SIZE
ld c, 1 * TILE_1BPP_SIZE
call LoadMailGFX_Color2
ld de, MorphMailBorderCornerGFX
ld c, 1 * LEN_1BPP_TILE
ld c, 1 * TILE_1BPP_SIZE
call LoadMailGFX_Color2
ld de, MorphMailBorderGFX
ld c, 1 * LEN_1BPP_TILE
ld c, 1 * TILE_1BPP_SIZE
call LoadMailGFX_Color2
ld de, EonMailBorder1GFX
ld c, 1 * LEN_1BPP_TILE
ld c, 1 * TILE_1BPP_SIZE
call LoadMailGFX_Color1
ld de, MorphMailDividerGFX
ld c, 1 * LEN_1BPP_TILE
ld c, 1 * TILE_1BPP_SIZE
call LoadMailGFX_Color2
ld de, MailDittoGFX
ld c, 6 * LEN_1BPP_TILE
ld c, 6 * TILE_1BPP_SIZE
call LoadMailGFX_Color3
call DrawMailBorder2
ld a, $31
@ -401,31 +401,31 @@ LoadBlueSkyMailGFX:
push bc
ld hl, vTiles2 tile $31
ld de, EonMailBorder1GFX
ld c, 1 * LEN_1BPP_TILE
ld c, 1 * TILE_1BPP_SIZE
call LoadMailGFX_Color2
ld a, $ff
ld bc, 1 tiles
call ByteFill
ld de, BlueSkyMailGrassGFX
ld c, 1 * LEN_1BPP_TILE
ld c, 1 * TILE_1BPP_SIZE
call LoadMailGFX_Color3
ld de, MailDragoniteAndSentretGFX
ld c, 23 * LEN_1BPP_TILE
ld c, 23 * TILE_1BPP_SIZE
call LoadMailGFX_Color3
ld de, MailCloudGFX
ld c, 6 * LEN_1BPP_TILE
ld c, 6 * TILE_1BPP_SIZE
call LoadMailGFX_Color1
ld de, FlowerMailBorderGFX + 6 * LEN_1BPP_TILE
ld c, 1 * LEN_1BPP_TILE
ld de, FlowerMailBorderGFX + 6 * TILE_1BPP_SIZE
ld c, 1 * TILE_1BPP_SIZE
call LoadMailGFX_Color1
ld de, MailCloudGFX
ld c, 1 * LEN_1BPP_TILE
ld c, 1 * TILE_1BPP_SIZE
call LoadMailGFX_Color1
ld de, MailCloudGFX + 2 * LEN_1BPP_TILE
ld c, 2 * LEN_1BPP_TILE
ld de, MailCloudGFX + 2 * TILE_1BPP_SIZE
ld c, 2 * TILE_1BPP_SIZE
call LoadMailGFX_Color1
ld de, MailCloudGFX + 5 * LEN_1BPP_TILE
ld c, 1 * LEN_1BPP_TILE
ld de, MailCloudGFX + 5 * TILE_1BPP_SIZE
ld c, 1 * TILE_1BPP_SIZE
call LoadMailGFX_Color1
ld a, $31
@ -487,18 +487,18 @@ LoadFlowerMailGFX:
push bc
ld hl, vTiles2 tile $31
ld de, FlowerMailBorderGFX
ld c, 8 * LEN_1BPP_TILE
ld c, 8 * TILE_1BPP_SIZE
call LoadMailGFX_Color1
ld de, MailOddishGFX
ld c, 4 * LEN_1BPP_TILE
ld c, 4 * TILE_1BPP_SIZE
call LoadMailGFX_Color3
ld de, FlowerMailBorderGFX + 6 * LEN_1BPP_TILE
ld c, 1 * LEN_1BPP_TILE
ld de, FlowerMailBorderGFX + 6 * TILE_1BPP_SIZE
ld c, 1 * TILE_1BPP_SIZE
call LoadMailGFX_Color2
ld de, FlowerMailFlowerGFX
ld c, 4 * LEN_1BPP_TILE
ld c, 4 * TILE_1BPP_SIZE
call LoadMailGFX_Color1
ld c, 4 * LEN_1BPP_TILE
ld c, 4 * TILE_1BPP_SIZE
call LoadMailGFX_Color2
call DrawMailBorder
@ -541,17 +541,17 @@ LoadPortraitMailGFX:
push bc
ld hl, vTiles2 tile $31
ld de, PortraitMailBorderGFX
ld c, 5 * LEN_1BPP_TILE
ld c, 5 * TILE_1BPP_SIZE
call LoadMailGFX_Color2
ld de, PortraitMailUnderlineGFX
ld c, 1 * LEN_1BPP_TILE
ld c, 1 * TILE_1BPP_SIZE
call LoadMailGFX_Color2
ld hl, vTiles2 tile $3d
ld de, PortraitMailLargePokeballGFX
ld c, 4 * LEN_1BPP_TILE
ld c, 4 * TILE_1BPP_SIZE
call LoadMailGFX_Color1
ld de, PortraitMailSmallPokeballGFX
ld c, 1 * LEN_1BPP_TILE
ld c, 1 * TILE_1BPP_SIZE
call LoadMailGFX_Color2
call DrawMailBorder2
@ -571,22 +571,22 @@ LoadMusicMailGFX:
push bc
ld hl, vTiles2 tile $31
ld de, MusicMailBorderGFX
ld c, 4 * LEN_1BPP_TILE
ld c, 4 * TILE_1BPP_SIZE
call LoadMailGFX_Color2
ld de, MorphMailBorderGFX
ld c, 2 * LEN_1BPP_TILE
ld c, 2 * TILE_1BPP_SIZE
call LoadMailGFX_Color2
ld de, MailNatuGFX
ld c, 6 * LEN_1BPP_TILE
ld c, 6 * TILE_1BPP_SIZE
call LoadMailGFX_Color3
xor a
ld bc, 1 tiles
call ByteFill
ld de, MusicMailLargeNoteGFX
ld c, 3 * LEN_1BPP_TILE
ld c, 3 * TILE_1BPP_SIZE
call LoadMailGFX_Color1
ld de, MusicMailSmallNoteGFX
ld c, 1 * LEN_1BPP_TILE
ld c, 1 * TILE_1BPP_SIZE
call LoadMailGFX_Color1
ld a, $31
@ -612,19 +612,19 @@ LoadMusicMailGFX:
LoadMirageMailGFX:
push bc
ld hl, vTiles2 tile $31
ld bc, 5 * LEN_1BPP_TILE
ld bc, 5 * TILE_1BPP_SIZE
call MailGFX_GenerateMonochromeTilesColor2
ld de, BlueSkyMailGrassGFX
ld c, 1 * LEN_1BPP_TILE
ld c, 1 * TILE_1BPP_SIZE
call LoadMailGFX_Color2
ld de, MailMewGFX
ld c, 18 * LEN_1BPP_TILE
ld c, 18 * TILE_1BPP_SIZE
call LoadMailGFX_Color2
ld de, LiteBlueMailBorderGFX + 1 * LEN_1BPP_TILE
ld c, 1 * LEN_1BPP_TILE
ld de, LiteBlueMailBorderGFX + 1 * TILE_1BPP_SIZE
ld c, 1 * TILE_1BPP_SIZE
call LoadMailGFX_Color1
ld de, LiteBlueMailBorderGFX + 6 * LEN_1BPP_TILE
ld c, 1 * LEN_1BPP_TILE
ld de, LiteBlueMailBorderGFX + 6 * TILE_1BPP_SIZE
ld c, 1 * TILE_1BPP_SIZE
call LoadMailGFX_Color1
call DrawMailBorder2

View File

@ -48,7 +48,7 @@ WritePartyMenuTilemap:
xor a
ldh [hBGMapMode], a
hlcoord 0, 0
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld bc, SCREEN_AREA
ld a, " "
call ByteFill ; blank the tilemap
call GetPartyMenuQualityIndexes

View File

@ -26,9 +26,9 @@ _SwitchPartyMons:
call ByteFill
pop af
ld hl, wShadowOAMSprite00
ld bc, 4 * SPRITEOAMSTRUCT_LENGTH
ld bc, 4 * OBJ_SIZE
call AddNTimes
ld de, SPRITEOAMSTRUCT_LENGTH
ld de, OBJ_SIZE
ld c, 4
.gfx_loop
ld [hl], OAM_YCOORD_HIDDEN

View File

@ -56,7 +56,7 @@ PrintDexEntry:
push af
xor a
ldh [rIF], a
ld a, (1 << SERIAL) | (1 << VBLANK)
ld a, IE_SERIAL | IE_VBLANK
ldh [rIE], a
call Printer_StartTransmission
@ -140,7 +140,7 @@ PrintPCBox:
push af
xor a
ldh [rIF], a
ld a, (1 << SERIAL) | (1 << VBLANK)
ld a, IE_SERIAL | IE_VBLANK
ldh [rIE], a
ld hl, hVBlank
@ -221,7 +221,7 @@ PrintUnownStamp:
push af
xor a
ldh [rIF], a
ld a, (1 << SERIAL) | (1 << VBLANK)
ld a, IE_SERIAL | IE_VBLANK
ldh [rIE], a
ld hl, hVBlank
@ -286,7 +286,7 @@ PrintMailAndExit:
push af
xor a
ldh [rIF], a
ld a, (1 << SERIAL) | (1 << VBLANK)
ld a, IE_SERIAL | IE_VBLANK
ldh [rIE], a
xor a
@ -329,7 +329,7 @@ PrintPartymon:
push af
xor a
ldh [rIF], a
ld a, (1 << SERIAL) | (1 << VBLANK)
ld a, IE_SERIAL | IE_VBLANK
ldh [rIE], a
xor a
@ -393,7 +393,7 @@ _PrintDiploma:
push af
xor a
ldh [rIF], a
ld a, (1 << SERIAL) | (1 << VBLANK)
ld a, IE_SERIAL | IE_VBLANK
ldh [rIE], a
ld hl, hVBlank
@ -463,9 +463,9 @@ CheckCancelPrint:
ld [wPrinterOpcode], a
ld a, $88
ldh [rSB], a
ld a, (0 << rSC_ON) | (1 << rSC_CLOCK)
ld a, SC_INTERNAL
ldh [rSC], a
ld a, (1 << rSC_ON) | (1 << rSC_CLOCK)
ld a, SC_START | SC_INTERNAL
ldh [rSC], a
.loop2
ld a, [wPrinterOpcode]
@ -481,14 +481,14 @@ CheckCancelPrint:
Printer_CopyTilemapToBuffer:
hlcoord 0, 0
ld de, wPrinterTilemapBuffer
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld bc, SCREEN_AREA
call CopyBytes
ret
Printer_CopyBufferToTilemap:
ld hl, wPrinterTilemapBuffer
decoord 0, 0
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld bc, SCREEN_AREA
call CopyBytes
ret
@ -630,7 +630,7 @@ PrintPCBox_Page1:
xor a
ld [wWhichBoxMonToPrint], a
hlcoord 0, 0
ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
ld bc, SCREEN_AREA
ld a, " "
call ByteFill
call Printer_PlaceEmptyBoxSlotString
@ -667,7 +667,7 @@ PrintPCBox_Page1:
PrintPCBox_Page2:
hlcoord 0, 0
ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
ld bc, SCREEN_AREA
ld a, " "
call ByteFill
call Printer_PlaceEmptyBoxSlotString
@ -684,7 +684,7 @@ PrintPCBox_Page2:
PrintPCBox_Page3:
hlcoord 0, 0
ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
ld bc, SCREEN_AREA
ld a, " "
call ByteFill
call Printer_PlaceEmptyBoxSlotString
@ -701,7 +701,7 @@ PrintPCBox_Page3:
PrintPCBox_Page4:
hlcoord 0, 0
ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
ld bc, SCREEN_AREA
ld a, " "
call ByteFill
call Printer_PlaceEmptyBoxSlotString

View File

@ -270,9 +270,9 @@ Printer_WaitHandshake:
ld [wPrinterOpcode], a
ld a, $88
ldh [rSB], a
ld a, (0 << rSC_ON) | (1 << rSC_CLOCK)
ld a, SC_INTERNAL
ldh [rSC], a
ld a, (1 << rSC_ON) | (1 << rSC_CLOCK)
ld a, SC_START | SC_INTERNAL
ldh [rSC], a
ret
@ -613,9 +613,9 @@ Printer_Send0x08:
Printer_SerialSend:
ldh [rSB], a
ld a, (0 << rSC_ON) | (1 << rSC_CLOCK)
ld a, SC_INTERNAL
ldh [rSC], a
ld a, (1 << rSC_ON) | (1 << rSC_CLOCK)
ld a, SC_START | SC_INTERNAL
ldh [rSC], a
ret

View File

@ -1,24 +1,24 @@
StopRTC: ; unreferenced
ld a, SRAM_ENABLE
ld [MBC3SRamEnable], a
ld a, RAMG_SRAM_ENABLE
ld [rRAMG], a
call LatchClock
ld a, RTC_DH
ld [MBC3SRamBank], a
ld a, [MBC3RTC]
set RTC_DH_HALT, a
ld [MBC3RTC], a
ld a, RAMB_RTC_DH
ld [rRAMB], a
ld a, [rRTCREG]
set B_RAMB_RTC_DH_HALT, a
ld [rRTCREG], a
call CloseSRAM
ret
StartRTC:
ld a, SRAM_ENABLE
ld [MBC3SRamEnable], a
ld a, RAMG_SRAM_ENABLE
ld [rRAMG], a
call LatchClock
ld a, RTC_DH
ld [MBC3SRamBank], a
ld a, [MBC3RTC]
res RTC_DH_HALT, a
ld [MBC3RTC], a
ld a, RAMB_RTC_DH
ld [rRAMB], a
ld a, [rRTCREG]
res B_RAMB_RTC_DH_HALT, a
ld [rRTCREG], a
call CloseSRAM
ret
@ -74,15 +74,15 @@ StageRTCTimeForSave:
ret
SaveRTC:
ld a, SRAM_ENABLE
ld [MBC3SRamEnable], a
ld a, RAMG_SRAM_ENABLE
ld [rRAMG], a
call LatchClock
ld hl, MBC3RTC
ld a, RTC_DH
ld [MBC3SRamBank], a
res RTC_DH_OVERFLOW, [hl]
ld hl, rRTCREG
ld a, RAMB_RTC_DH
ld [rRAMB], a
res B_RAMB_RTC_DH_CARRY, [hl]
ld a, BANK(sRTCStatusFlags)
ld [MBC3SRamBank], a
ld [rRAMB], a
xor a
ld [sRTCStatusFlags], a
call CloseSRAM
@ -102,9 +102,9 @@ StartClock::
_FixDays:
ld hl, hRTCDayHi
bit RTC_DH_OVERFLOW, [hl]
bit B_RAMB_RTC_DH_CARRY, [hl]
jr nz, .reset_rtc
bit RTC_DH_HALT, [hl]
bit B_RAMB_RTC_DH_HALT, [hl]
jr nz, .reset_rtc
xor a
ret
@ -115,16 +115,16 @@ _FixDays:
ret
_GetClock:
ld a, SRAM_ENABLE
ld [MBC3SRamEnable], a
ld a, RAMG_SRAM_ENABLE
ld [rRAMG], a
call LatchClock
ld a, RTC_DH
ld [MBC3SRamBank], a
ld a, [MBC3RTC]
ld a, RAMB_RTC_DH
ld [rRAMB], a
ld a, [rRTCREG]
push af
call CloseSRAM
pop af
bit RTC_DH_HALT, a
bit B_RAMB_RTC_DH_HALT, a
ret z
ld a, BANK(sRTCHaltCheckValue)

View File

@ -121,7 +121,7 @@ InitClock:
xor a
ldh [hBGMapMode], a
hlcoord 0, 0
ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
ld bc, SCREEN_AREA
xor a
call ByteFill
ld a, $1

View File

@ -305,7 +305,7 @@ AddOrSubtractY:
push hl
ld a, [hl]
ld hl, wCurSpriteOAMFlags
bit OAM_Y_FLIP, [hl]
bit B_OAM_YFLIP, [hl]
jr z, .ok
; -8 - a
add 8
@ -320,7 +320,7 @@ AddOrSubtractX:
push hl
ld a, [hl]
ld hl, wCurSpriteOAMFlags
bit OAM_X_FLIP, [hl]
bit B_OAM_XFLIP, [hl]
jr z, .ok
; -8 - a
add 8
@ -336,10 +336,10 @@ GetSpriteOAMAttr:
ld b, a
ld a, [hl]
xor b
and PRIORITY | Y_FLIP | X_FLIP
and OAM_PRIO | OAM_YFLIP | OAM_XFLIP
ld b, a
ld a, [hl]
and ~(PRIORITY | Y_FLIP | X_FLIP)
and ~(OAM_PRIO | OAM_YFLIP | OAM_XFLIP)
or b
ret
@ -424,7 +424,7 @@ GetSpriteAnimFrame:
push af
ld a, [hl]
push hl
and ~(Y_FLIP << 1 | X_FLIP << 1)
and ~(OAM_YFLIP << 1 | OAM_XFLIP << 1)
ld hl, SPRITEANIMSTRUCT_DURATIONOFFSET
add hl, bc
add [hl]
@ -434,7 +434,7 @@ GetSpriteAnimFrame:
pop hl
.okay
ld a, [hl]
and Y_FLIP << 1 | X_FLIP << 1 ; The << 1 is compensated in the "oamframe" macro
and OAM_YFLIP << 1 | OAM_XFLIP << 1 ; The << 1 is compensated in the "oamframe" macro
srl a
ld [wCurSpriteOAMFlags], a
pop af

View File

@ -20,7 +20,7 @@ _LoadOverworldAttrmapPals::
ld h, a
ld a, [hl]
and $f
bit OAM_TILE_BANK, a
bit B_OAM_BANK1, a
jr z, .next
jr .by_map_group
@ -34,7 +34,7 @@ _LoadOverworldAttrmapPals::
ld a, [hl]
swap a
and $f
bit OAM_TILE_BANK, a
bit B_OAM_BANK1, a
jr z, .next
.by_map_group
@ -76,7 +76,7 @@ _ScrollBGMapPalettes::
ld h, a
ld a, [hl]
and $f
bit OAM_TILE_BANK, a
bit B_OAM_BANK1, a
jr z, .next
jr .by_map_group
@ -90,7 +90,7 @@ _ScrollBGMapPalettes::
ld a, [hl]
swap a
and $f
bit OAM_TILE_BANK, a
bit B_OAM_BANK1, a
jr z, .next
.by_map_group

View File

@ -296,7 +296,7 @@ ScrollTileUpDown: ; unreferenced
ScrollTileLeft:
ld h, d
ld l, e
ld c, LEN_2BPP_TILE / 4
ld c, TILE_SIZE / 4
.loop
rept 4
ld a, [hl]
@ -310,7 +310,7 @@ endr
ScrollTileRight:
ld h, d
ld l, e
ld c, LEN_2BPP_TILE / 4
ld c, TILE_SIZE / 4
.loop
rept 4
ld a, [hl]
@ -327,9 +327,9 @@ ScrollTileUp:
ld d, [hl]
inc hl
ld e, [hl]
ld bc, LEN_2BPP_TILE - 2
ld bc, TILE_SIZE - 2
add hl, bc
ld a, LEN_2BPP_TILE / 4
ld a, TILE_SIZE / 4
.loop
ld c, [hl]
ld [hl], e
@ -350,14 +350,14 @@ ScrollTileUp:
ScrollTileDown:
ld h, d
ld l, e
ld de, LEN_2BPP_TILE - 2
ld de, TILE_SIZE - 2
push hl
add hl, de
ld d, [hl]
inc hl
ld e, [hl]
pop hl
ld a, LEN_2BPP_TILE / 4
ld a, TILE_SIZE / 4
.loop
ld b, [hl]
ld [hl], d
@ -632,7 +632,7 @@ WriteTile:
ld [hl], e
inc hl
ld [hl], d
rept (LEN_2BPP_TILE - 2) / 2
rept (TILE_SIZE - 2) / 2
pop de
inc hl
ld [hl], e
@ -666,7 +666,7 @@ AnimateWaterPalette:
ret nz
; Ready for BGPD input
ld a, (1 << rBGPI_AUTO_INCREMENT) palette PAL_BG_WATER color 0
ld a, BGPI_AUTOINC palette PAL_BG_WATER color 0
ldh [rBGPI], a
; A cycle of 4 colors (0 1 2 1), updating every other tick
@ -719,7 +719,7 @@ FlickeringCaveEntrancePalette:
ret nz
; Ready for BGPD input
ld a, (1 << rBGPI_AUTO_INCREMENT) palette PAL_BG_YELLOW color 0
ld a, BGPI_AUTOINC palette PAL_BG_YELLOW color 0
ldh [rBGPI], a
; A cycle of 2 colors (0 2), updating every other vblank

View File

@ -8,7 +8,7 @@ FontBattleExtra:
INCBIN "gfx/font/font_battle_extra.2bpp"
Frames:
table_width TEXTBOX_FRAME_TILES * LEN_1BPP_TILE
table_width TEXTBOX_FRAME_TILES * TILE_1BPP_SIZE
INCBIN "gfx/frames/1.1bpp"
INCBIN "gfx/frames/2.1bpp"
INCBIN "gfx/frames/3.1bpp"

View File

@ -4,12 +4,12 @@
; then a row of the bottom two tiles for those eight footprints.
; These macros help extract the first and the last two tiles, respectively.
DEF footprint_top EQUS "0, 2 * LEN_1BPP_TILE"
DEF footprint_bottom EQUS "2 * LEN_1BPP_TILE, 2 * LEN_1BPP_TILE"
DEF footprint_top EQUS "0, 2 * TILE_1BPP_SIZE"
DEF footprint_bottom EQUS "2 * TILE_1BPP_SIZE, 2 * TILE_1BPP_SIZE"
Footprints:
; Entries correspond to Pokémon species, two apiece, 8 tops then 8 bottoms
table_width LEN_1BPP_TILE * 4
table_width TILE_1BPP_SIZE * 4
; 001-008 top halves
INCBIN "gfx/footprints/bulbasaur.1bpp", footprint_top

View File

@ -1,7 +1,7 @@
MACRO tilepal
; used in gfx/tilesets/*_palette_map.asm
; vram bank, pals
DEF x = \1 << OAM_TILE_BANK
DEF x = OAM_BANK\1
rept (_NARG - 1) / 2
dn (x | PAL_BG_\3), (x | PAL_BG_\2)
shift 2

View File

@ -10,13 +10,13 @@ InitSound::
push af
ld a, BANK(_InitSound)
ldh [hROMBank], a
ld [MBC3RomBank], a
ld [rROMB0], a
call _InitSound
pop af
ldh [hROMBank], a
ld [MBC3RomBank], a
ld [rROMB0], a
pop af
pop bc
@ -34,13 +34,13 @@ UpdateSound::
push af
ld a, BANK(_UpdateSound)
ldh [hROMBank], a
ld [MBC3RomBank], a
ld [rROMB0], a
call _UpdateSound
pop af
ldh [hROMBank], a
ld [MBC3RomBank], a
ld [rROMB0], a
pop af
pop bc
@ -51,14 +51,14 @@ UpdateSound::
_LoadMusicByte::
; [wCurMusicByte] = [a:de]
ldh [hROMBank], a
ld [MBC3RomBank], a
ld [rROMB0], a
ld a, [de]
ld [wCurMusicByte], a
ld a, BANK(LoadMusicByte)
ldh [hROMBank], a
ld [MBC3RomBank], a
ld [rROMB0], a
ret
PlayMusic::
@ -73,7 +73,7 @@ PlayMusic::
push af
ld a, BANK(_PlayMusic) ; aka BANK(_InitSound)
ldh [hROMBank], a
ld [MBC3RomBank], a
ld [rROMB0], a
ld a, e
and a
@ -88,7 +88,7 @@ PlayMusic::
.end
pop af
ldh [hROMBank], a
ld [MBC3RomBank], a
ld [rROMB0], a
pop af
pop bc
pop de
@ -107,7 +107,7 @@ PlayMusic2::
push af
ld a, BANK(_PlayMusic)
ldh [hROMBank], a
ld [MBC3RomBank], a
ld [rROMB0], a
push de
ld de, MUSIC_NONE
@ -118,7 +118,7 @@ PlayMusic2::
pop af
ldh [hROMBank], a
ld [MBC3RomBank], a
ld [rROMB0], a
pop af
pop bc
@ -140,7 +140,7 @@ PlayCry::
; Cries are stuck in one bank.
ld a, BANK(PokemonCries)
ldh [hROMBank], a
ld [MBC3RomBank], a
ld [rROMB0], a
ld hl, PokemonCries
rept MON_CRY_LENGTH
@ -163,13 +163,13 @@ endr
ld a, BANK(_PlayCry)
ldh [hROMBank], a
ld [MBC3RomBank], a
ld [rROMB0], a
call _PlayCry
pop af
ldh [hROMBank], a
ld [MBC3RomBank], a
ld [rROMB0], a
pop af
pop bc
@ -200,7 +200,7 @@ PlaySFX::
push af
ld a, BANK(_PlaySFX)
ldh [hROMBank], a
ld [MBC3RomBank], a
ld [rROMB0], a
ld a, e
ld [wCurSFX], a
@ -208,7 +208,7 @@ PlaySFX::
pop af
ldh [hROMBank], a
ld [MBC3RomBank], a
ld [rROMB0], a
.done
pop af
@ -498,9 +498,9 @@ TerminateExpBarSound::
xor a
ld [wChannel5Flags1], a
ld [wPitchSweep], a
ldh [rNR10], a
ldh [rNR11], a
ldh [rNR12], a
ldh [rNR13], a
ldh [rNR14], a
ldh [rAUD1SWEEP], a
ldh [rAUD1LEN], a
ldh [rAUD1ENV], a
ldh [rAUD1LOW], a
ldh [rAUD1HIGH], a
ret

View File

@ -164,7 +164,7 @@ FarCopyRadioText::
ld d, a
ld a, [hli]
ldh [hROMBank], a
ld [MBC3RomBank], a
ld [rROMB0], a
ld a, e
ld l, a
ld a, d
@ -174,7 +174,7 @@ FarCopyRadioText::
call CopyBytes
pop af
ldh [hROMBank], a
ld [MBC3RomBank], a
ld [rROMB0], a
ret
@ -252,6 +252,6 @@ PushLYOverrides::
ld a, HIGH(wLYOverrides)
ld [wRequested2bppDest + 1], a
ld a, (wLYOverridesEnd - wLYOverrides) / LEN_2BPP_TILE
ld a, (wLYOverridesEnd - wLYOverrides) / TILE_SIZE
ld [wRequested2bppSize], a
ret

View File

@ -12,8 +12,8 @@ ClearSprites::
HideSprites::
; Set all OAM y-positions to 160 to hide them offscreen
ld hl, wShadowOAMSprite00YCoord
ld de, SPRITEOAMSTRUCT_LENGTH
ld b, NUM_SPRITE_OAM_STRUCTS
ld de, OBJ_SIZE
ld b, OAM_COUNT
ld a, OAM_YCOORD_HIDDEN
.loop
ld [hl], a ; y

View File

@ -206,7 +206,7 @@ Request1bpp::
Get2bpp::
; copy c 2bpp tiles from b:de to hl
ldh a, [rLCDC]
bit rLCDC_ENABLE, a
bit B_LCDC_ENABLE, a
jp nz, Request2bpp
push hl
@ -217,7 +217,7 @@ Get2bpp::
; bank
ld a, b
; bc = c * LEN_2BPP_TILE
; bc = c * TILE_SIZE
push af
swap c
ld a, $f
@ -233,7 +233,7 @@ Get2bpp::
Get1bpp::
; copy c 1bpp tiles from b:de to hl
ldh a, [rLCDC]
bit rLCDC_ENABLE, a
bit B_LCDC_ENABLE, a
jp nz, Request1bpp
push de
@ -243,7 +243,7 @@ Get1bpp::
; bank
ld a, b
; bc = c * LEN_1BPP_TILE
; bc = c * TILE_1BPP_SIZE
push af
ld h, 0
ld l, c
@ -268,7 +268,7 @@ DuplicateGet2bpp:: ; unreferenced
; bank
ld a, b
; bc = c * LEN_2BPP_TILE
; bc = c * TILE_SIZE
ld h, 0
ld l, c
add hl, hl

View File

@ -11,7 +11,7 @@ FarCall::
SECTION "rst10", ROM0[$0010]
Bankswitch::
ldh [hROMBank], a
ld [MBC3RomBank], a
ld [rROMB0], a
ret
SECTION "rst18", ROM0[$0018]

View File

@ -14,7 +14,7 @@ Reset::
jr Init
_Start::
cp $11
cp BOOTUP_A_CGB
jr z, .cgb
xor a ; FALSE
jr .load
@ -94,14 +94,14 @@ Init::
ldh [hSCY], a
ldh [rJOYP], a
ld a, $8 ; HBlank int enable
ld a, STAT_MODE_0
ldh [rSTAT], a
ld a, $90
ld a, SCREEN_HEIGHT_PX
ldh [hWY], a
ldh [rWY], a
ld a, 7
ld a, WX_OFS
ldh [hWX], a
ldh [rWX], a
@ -122,11 +122,11 @@ Init::
farcall StartClock
ld a, SRAM_ENABLE
ld [MBC3SRamEnable], a
ld a, SRAM_DISABLE
ld [MBC3LatchClock], a
ld [MBC3SRamEnable], a
ld a, RAMG_SRAM_ENABLE
ld [rRAMG], a
ld a, RAMG_SRAM_DISABLE
ld [rRTCLATCH], a
ld [rRAMG], a
ld a, LCDC_DEFAULT ; %11100011
; LCD on

View File

@ -38,7 +38,7 @@ UpdateJoypad::
; We can only get four inputs at a time.
; We take d-pad first for no particular reason.
ld a, 1 << rJOYP_DPAD
ld a, JOYP_GET_CTRL_PAD
ldh [rJOYP], a
; Read twice to give the request time to take.
ldh a, [rJOYP]
@ -47,7 +47,7 @@ UpdateJoypad::
; The Joypad register output is in the lo nybble (inversed).
; We make the hi nybble of our new container d-pad input.
cpl
and $f
and JOYP_INPUTS
swap a
; We'll keep this in b for now.
@ -55,7 +55,7 @@ UpdateJoypad::
; Buttons make 8 total inputs (A, B, Select, Start).
; We can fit this into one byte.
ld a, 1 << rJOYP_BUTTONS
ld a, JOYP_GET_BUTTONS
ldh [rJOYP], a
; Wait for input to stabilize.
rept 6
@ -63,12 +63,12 @@ rept 6
endr
; Buttons take the lo nybble.
cpl
and $f
and JOYP_INPUTS
or b
ld b, a
; Reset the joypad register since we're done with it.
ld a, (1 << rJOYP_BUTTONS) | (1 << rJOYP_DPAD)
ld a, JOYP_GET_NONE
ldh [rJOYP], a
; To get the delta we xor the last frame's input with the new one.

View File

@ -27,7 +27,7 @@ DisableLCD::
; Don't need to do anything if the LCD is already off
ldh a, [rLCDC]
bit rLCDC_ENABLE, a
bit B_LCDC_ENABLE, a
ret z
xor a
@ -36,7 +36,7 @@ DisableLCD::
ld b, a
; Disable VBlank
res VBLANK, a
res B_IE_VBLANK, a
ldh [rIE], a
.wait
@ -46,7 +46,7 @@ DisableLCD::
jr nz, .wait
ldh a, [rLCDC]
and ~(1 << rLCDC_ENABLE)
and ~LCDC_ON
ldh [rLCDC], a
xor a
@ -57,6 +57,6 @@ DisableLCD::
EnableLCD::
ldh a, [rLCDC]
set rLCDC_ENABLE, a
set B_LCDC_ENABLE, a
ldh [rLCDC], a
ret

View File

@ -106,7 +106,7 @@ LoadOverworldTilemap::
ld a, "■"
hlcoord 0, 0
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld bc, SCREEN_AREA
call ByteFill
ld a, BANK(_LoadOverworldTilemap)
@ -276,7 +276,7 @@ LoadMapTimeOfDay::
ld [hli], a
dec c
jr nz, .column
ld bc, BG_MAP_WIDTH - SCREEN_WIDTH
ld bc, TILEMAP_WIDTH - SCREEN_WIDTH
add hl, bc
pop bc
dec b
@ -1582,7 +1582,7 @@ ScrollMapDown::
ld l, a
ld a, [wBGMapAnchor + 1]
ld h, a
ld bc, BG_MAP_WIDTH tiles
ld bc, TILEMAP_WIDTH tiles
add hl, bc
; cap d at HIGH(vBGMap0)
ld a, h
@ -1667,7 +1667,7 @@ UpdateBGMapRow::
push de
call .iteration
pop de
ld a, BG_MAP_WIDTH
ld a, TILEMAP_WIDTH
add e
ld e, a
@ -1701,7 +1701,7 @@ UpdateBGMapColumn::
ld [hli], a
ld a, d
ld [hli], a
ld a, BG_MAP_WIDTH
ld a, TILEMAP_WIDTH
add e
ld e, a
jr nc, .skip

View File

@ -20,7 +20,7 @@ UpdateCGBPals::
ld hl, wBGPals2
; copy 8 pals to bgpd
ld a, 1 << rBGPI_AUTO_INCREMENT
ld a, BGPI_AUTOINC
ldh [rBGPI], a
ld c, 8 / 2
.bgp
@ -35,7 +35,7 @@ endr
; hl is now wOBPals2
; copy 8 pals to obpd
ld a, 1 << rOBPI_AUTO_INCREMENT
ld a, OBPI_AUTOINC
ldh [rOBPI], a
ld c, 8 / 2
.obp
@ -191,14 +191,14 @@ CopyPals::
; copy c palettes in order b from de to hl
push bc
ld c, NUM_PAL_COLORS
ld c, PAL_COLORS
.loop
push de
push hl
; get pal color
ld a, b
maskbits 1 << PAL_COLOR_SIZE
maskbits 1 << COLOR_SIZE
; 2 bytes per color
add a
ld l, a
@ -216,7 +216,7 @@ CopyPals::
ld [hl], d
inc hl
; next pal color
rept PAL_COLOR_SIZE
rept COLOR_SIZE
srl b
endr
; source
@ -226,7 +226,7 @@ endr
jr nz, .loop
; de += 8 (next pal)
ld a, PALETTE_SIZE
ld a, PAL_SIZE
add e
jr nc, .ok
inc d
@ -259,7 +259,7 @@ ClearVBank1::
ReloadPalettes::
hlcoord 0, 0
decoord 0, 0, wAttrmap
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld bc, SCREEN_AREA
.loop
ld a, [hli]
cp "■"

View File

@ -31,11 +31,11 @@ AskSerial::
ldh [rSB], a
; switch to internal clock
ld a, (0 << rSC_ON) | (1 << rSC_CLOCK)
ld a, SC_INTERNAL
ldh [rSC], a
; start transfer
ld a, (1 << rSC_ON) | (1 << rSC_CLOCK)
ld a, SC_START | SC_INTERNAL
ldh [rSC], a
ret

View File

@ -24,9 +24,9 @@ Serial::
cp USING_INTERNAL_CLOCK
jr z, .player2
ld a, (0 << rSC_ON) | (0 << rSC_CLOCK)
ld a, SC_EXTERNAL
ldh [rSC], a
ld a, (1 << rSC_ON) | (0 << rSC_CLOCK)
ld a, SC_START | SC_EXTERNAL
ldh [rSC], a
jr .player2
@ -57,9 +57,9 @@ Serial::
bit 7, a ; wait until rDIV has incremented from 3 to $80 or more
jr nz, .delay_loop
ld a, (0 << rSC_ON) | (0 << rSC_CLOCK)
ld a, SC_EXTERNAL
ldh [rSC], a
ld a, (1 << rSC_ON) | (0 << rSC_CLOCK)
ld a, SC_START | SC_EXTERNAL
ldh [rSC], a
jr .player2
@ -126,9 +126,9 @@ Serial_ExchangeByte::
ldh a, [hSerialConnectionStatus]
cp USING_INTERNAL_CLOCK
jr nz, .not_player_2
ld a, (0 << rSC_ON) | (1 << rSC_CLOCK)
ld a, SC_INTERNAL
ldh [rSC], a
ld a, (1 << rSC_ON) | (1 << rSC_CLOCK)
ld a, SC_START | SC_INTERNAL
ldh [rSC], a
.not_player_2
.loop
@ -156,8 +156,8 @@ Serial_ExchangeByte::
.not_player_1_or_timed_out
ldh a, [rIE]
and (1 << SERIAL) | (1 << TIMER) | (1 << LCD_STAT) | (1 << VBLANK)
cp 1 << SERIAL
and IE_SERIAL | IE_TIMER | IE_STAT | IE_VBLANK
cp IE_SERIAL
jr nz, .loop
ld a, [wLinkByteTimeout]
dec a
@ -180,8 +180,8 @@ Serial_ExchangeByte::
xor a
ldh [hSerialReceivedNewData], a
ldh a, [rIE]
and (1 << SERIAL) | (1 << TIMER) | (1 << LCD_STAT) | (1 << VBLANK)
sub 1 << SERIAL
and IE_SERIAL | IE_TIMER | IE_STAT | IE_VBLANK
sub IE_SERIAL
jr nz, .non_serial_interrupts_enabled
; a == 0
@ -212,8 +212,8 @@ Serial_ExchangeByte::
.timed_out
ldh a, [rIE]
and (1 << SERIAL) | (1 << TIMER) | (1 << LCD_STAT) | (1 << VBLANK)
cp 1 << SERIAL
and IE_SERIAL | IE_TIMER | IE_STAT | IE_VBLANK
cp IE_SERIAL
ld a, SERIAL_NO_DATA_BYTE
ret z
ld a, [hl]
@ -362,9 +362,9 @@ LinkTransfer::
ldh a, [hSerialConnectionStatus]
cp USING_INTERNAL_CLOCK
jr nz, .player_1
ld a, (0 << rSC_ON) | (1 << rSC_CLOCK)
ld a, SC_INTERNAL
ldh [rSC], a
ld a, (1 << rSC_ON) | (1 << rSC_CLOCK)
ld a, SC_START | SC_INTERNAL
ldh [rSC], a
.player_1
@ -392,9 +392,9 @@ LinkDataReceived::
ldh a, [hSerialConnectionStatus]
cp USING_INTERNAL_CLOCK
ret nz
ld a, (0 << rSC_ON) | (1 << rSC_CLOCK)
ld a, SC_INTERNAL
ldh [rSC], a
ld a, (1 << rSC_ON) | (1 << rSC_CLOCK)
ld a, SC_START | SC_INTERNAL
ldh [rSC], a
ret
@ -407,8 +407,8 @@ SetBitsForTimeCapsuleRequestIfNotLinked:: ; unreferenced
ldh [rSB], a
xor a
ldh [hSerialReceive], a
ld a, (0 << rSC_ON) | (0 << rSC_CLOCK)
ld a, SC_EXTERNAL
ldh [rSC], a
ld a, (1 << rSC_ON) | (0 << rSC_CLOCK)
ld a, SC_START | SC_EXTERNAL
ldh [rSC], a
ret

View File

@ -3,21 +3,21 @@ OpenSRAM::
push af
; latch clock data
ld a, 1
ld [MBC3LatchClock], a
ld [rRTCLATCH], a
; enable sram/clock write
ld a, SRAM_ENABLE
ld [MBC3SRamEnable], a
ld a, RAMG_SRAM_ENABLE
ld [rRAMG], a
; select sram bank
pop af
ld [MBC3SRamBank], a
ld [rRAMB], a
ret
CloseSRAM::
push af
ld a, SRAM_DISABLE
ld a, RAMG_SRAM_DISABLE
; reset clock latch for next time
ld [MBC3LatchClock], a
ld [rRTCLATCH], a
; disable sram/clock write
ld [MBC3SRamEnable], a
ld [rRAMG], a
pop af
ret

View File

@ -26,14 +26,14 @@ ClearTilemap::
; Update the BG Map.
ldh a, [rLCDC]
bit rLCDC_ENABLE, a
bit B_LCDC_ENABLE, a
ret z
jp WaitBGMap
ClearScreen::
ld a, PAL_BG_TEXT
hlcoord 0, 0, wAttrmap
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
ld bc, SCREEN_AREA
call ByteFill
jr ClearTilemap
@ -678,7 +678,7 @@ TextCommand_FAR::
ld a, [hli]
ldh [hROMBank], a
ld [MBC3RomBank], a
ld [rROMB0], a
push hl
ld h, d
@ -688,7 +688,7 @@ TextCommand_FAR::
pop af
ldh [hROMBank], a
ld [MBC3RomBank], a
ld [rROMB0], a
ret
TextCommand_BCD::

View File

@ -104,7 +104,7 @@ CopyTilemapAtOnce::
ld l, 0
ld a, SCREEN_HEIGHT
ldh [hTilesPerCycle], a
ld b, 1 << 1 ; not in v/hblank
ld b, STAT_BUSY
ld c, LOW(rSTAT)
.loop
@ -122,7 +122,7 @@ rept SCREEN_WIDTH / 2
inc l
endr
ld de, BG_MAP_WIDTH - SCREEN_WIDTH
ld de, TILEMAP_WIDTH - SCREEN_WIDTH
add hl, de
ldh a, [hTilesPerCycle]
dec a

View File

@ -6,9 +6,9 @@ Timer:: ; unreferenced
LatchClock::
; latch clock counter data
ld a, 0
ld [MBC3LatchClock], a
ld [rRTCLATCH], a
ld a, 1
ld [MBC3LatchClock], a
ld [rRTCLATCH], a
ret
UpdateTime::
@ -22,35 +22,35 @@ GetClock::
; store clock data in hRTCDayHi-hRTCSeconds
; enable clock r/w
ld a, SRAM_ENABLE
ld [MBC3SRamEnable], a
ld a, RAMG_SRAM_ENABLE
ld [rRAMG], a
; clock data is 'backwards' in hram
call LatchClock
ld hl, MBC3SRamBank
ld de, MBC3RTC
ld hl, rRAMB
ld de, rRTCREG
ld [hl], RTC_S
ld [hl], RAMB_RTC_S
ld a, [de]
maskbits 60
ldh [hRTCSeconds], a
ld [hl], RTC_M
ld [hl], RAMB_RTC_M
ld a, [de]
maskbits 60
ldh [hRTCMinutes], a
ld [hl], RTC_H
ld [hl], RAMB_RTC_H
ld a, [de]
maskbits 24
ldh [hRTCHours], a
ld [hl], RTC_DL
ld [hl], RAMB_RTC_DL
ld a, [de]
ldh [hRTCDayLo], a
ld [hl], RTC_DH
ld [hl], RAMB_RTC_DH
ld a, [de]
ldh [hRTCDayHi], a
@ -64,10 +64,10 @@ FixDays::
; check if day count > 255 (bit 8 set)
ldh a, [hRTCDayHi] ; DH
bit RTC_DH_HI, a
bit B_RAMB_RTC_DH_HIGH, a
jr z, .daylo
; reset dh (bit 8)
res RTC_DH_HI, a
res B_RAMB_RTC_DH_HIGH, a
ldh [hRTCDayHi], a
; mod 140
@ -206,43 +206,43 @@ SetClock::
; set clock data from hram
; enable clock r/w
ld a, SRAM_ENABLE
ld [MBC3SRamEnable], a
ld a, RAMG_SRAM_ENABLE
ld [rRAMG], a
; set clock data
; stored 'backwards' in hram
call LatchClock
ld hl, MBC3SRamBank
ld de, MBC3RTC
ld hl, rRAMB
ld de, rRTCREG
; seems to be a halt check that got partially commented out
; this block is totally pointless
ld [hl], RTC_DH
ld [hl], RAMB_RTC_DH
ld a, [de]
bit RTC_DH_HALT, a
bit B_RAMB_RTC_DH_HALT, a
ld [de], a
; seconds
ld [hl], RTC_S
ld [hl], RAMB_RTC_S
ldh a, [hRTCSeconds]
ld [de], a
; minutes
ld [hl], RTC_M
ld [hl], RAMB_RTC_M
ldh a, [hRTCMinutes]
ld [de], a
; hours
ld [hl], RTC_H
ld [hl], RAMB_RTC_H
ldh a, [hRTCHours]
ld [de], a
; day lo
ld [hl], RTC_DL
ld [hl], RAMB_RTC_DL
ldh a, [hRTCDayLo]
ld [de], a
; day hi
ld [hl], RTC_DH
ld [hl], RAMB_RTC_DH
ldh a, [hRTCDayHi]
res RTC_DH_HALT, a ; make sure timer is active
res B_RAMB_RTC_DH_HALT, a ; make sure timer is active
ld [de], a
; cleanup

View File

@ -190,13 +190,13 @@ VBlank_Cutscene::
xor a
ldh [rIF], a
; enable lcd stat
ld a, 1 << LCD_STAT
ld a, IE_STAT
ldh [rIE], a
; rerequest serial int if applicable (still disabled)
; request lcd stat
ld a, b
and 1 << SERIAL
or 1 << LCD_STAT
and IF_SERIAL
or IF_STAT
ldh [rIF], a
ei
@ -286,7 +286,7 @@ VBlank_Credits::
xor a
ldh [rIF], a
ld a, 1 << LCD_STAT
ld a, IE_STAT
ldh [rIE], a
; request lcd stat
ldh [rIF], a
@ -384,9 +384,10 @@ VBlank_Unused::
xor a
ldh [rIF], a
; enable lcd stat
ld a, 1 << LCD_STAT
ld a, IE_STAT
ldh [rIE], a
; request lcd stat
assert IE_STAT == IF_STAT
ldh [rIF], a
ei

View File

@ -169,7 +169,7 @@ DEF THIRD_HEIGHT EQU SCREEN_HEIGHT / 3
ldh a, [hBGMapAddress]
ld l, a
ld de, 2 * THIRD_HEIGHT * BG_MAP_WIDTH
ld de, 2 * THIRD_HEIGHT * TILEMAP_WIDTH
add hl, de
; Next time: top third
@ -186,7 +186,7 @@ DEF THIRD_HEIGHT EQU SCREEN_HEIGHT / 3
ldh a, [hBGMapAddress]
ld l, a
ld de, THIRD_HEIGHT * BG_MAP_WIDTH
ld de, THIRD_HEIGHT * TILEMAP_WIDTH
add hl, de
; Next time: bottom third
@ -212,7 +212,7 @@ DEF THIRD_HEIGHT EQU SCREEN_HEIGHT / 3
ld a, THIRD_HEIGHT
; Discrepancy between wTilemap and BGMap
ld bc, BG_MAP_WIDTH - (SCREEN_WIDTH - 1)
ld bc, TILEMAP_WIDTH - (SCREEN_WIDTH - 1)
.row
; Copy a row of 20 tiles
@ -390,7 +390,7 @@ Video_DummyFunction:: ; unreferenced
EnableSpriteDisplay:: ; unreferenced
ld hl, rLCDC
set rLCDC_SPRITES_ENABLE, [hl]
set B_LCDC_OBJS, [hl]
ret
FillBGMap0WithBlack::
@ -405,7 +405,7 @@ FillBGMap0WithBlack::
jr z, .two
; 3
DEF BG_THIRD_HEIGHT EQU (BG_MAP_HEIGHT - SCREEN_HEIGHT) / 2
DEF BG_THIRD_HEIGHT EQU (TILEMAP_HEIGHT - SCREEN_HEIGHT) / 2
; Black out the 18 BG Map rows right of the screen area
ld a, 2
@ -419,7 +419,7 @@ DEF BG_THIRD_HEIGHT EQU (BG_MAP_HEIGHT - SCREEN_HEIGHT) / 2
ld b, SCREEN_HEIGHT
ld a, "■"
.loop1
rept BG_MAP_WIDTH - SCREEN_WIDTH
rept TILEMAP_WIDTH - SCREEN_WIDTH
ld [hli], a
endr
add hl, de
@ -430,13 +430,13 @@ endr
.two
; Black out the top 7 BG Map rows below the screen area
ld a, 1
ld de, BG_MAP_WIDTH * SCREEN_HEIGHT
ld de, TILEMAP_WIDTH * SCREEN_HEIGHT
jr .go
.one
; Black out the bottom 7 BG Map rows below the screen area
xor a
ld de, BG_MAP_WIDTH * (SCREEN_HEIGHT + BG_THIRD_HEIGHT)
ld de, TILEMAP_WIDTH * (SCREEN_HEIGHT + BG_THIRD_HEIGHT)
.go
ldh [hBlackOutBGMapThird], a
@ -448,7 +448,7 @@ endr
ld b, BG_THIRD_HEIGHT * 2
ld a, "■"
.loop2
rept BG_MAP_WIDTH / 2
rept TILEMAP_WIDTH / 2
ld [hli], a
endr
dec b

View File

@ -19,9 +19,8 @@ INCLUDE "macros/scripts/battle_commands.asm"
INCLUDE "macros/scripts/battle_anims.asm"
INCLUDE "macros/scripts/oam_anims.asm"
INCLUDE "macros/legacy.asm"
INCLUDE "constants/hardware.inc"
INCLUDE "constants/hardware_constants.asm"
INCLUDE "constants/deco_constants.asm"
INCLUDE "constants/ram_constants.asm"
INCLUDE "constants/misc_constants.asm"
@ -73,3 +72,5 @@ ENDC
IF DEF(_SILVER_VC)
INCLUDE "vc/pokesilver.constants.asm"
ENDC
INCLUDE "macros/legacy.asm"

View File

@ -36,9 +36,9 @@ ENDM
MACRO bgcoord
; register, x, y[, origin]
if _NARG < 4
ld \1, (\3) * BG_MAP_WIDTH + (\2) + vBGMap0
ld \1, (\3) * TILEMAP_WIDTH + (\2) + vBGMap0
else
ld \1, (\3) * BG_MAP_WIDTH + (\2) + \4
ld \1, (\3) * TILEMAP_WIDTH + (\2) + \4
endc
ENDM

View File

@ -19,18 +19,18 @@ DEF palred EQUS "(1 << 0) *"
DEF palgreen EQUS "(1 << 5) *"
DEF palblue EQUS "(1 << 10) *"
DEF palettes EQUS "* PALETTE_SIZE"
DEF palette EQUS "+ PALETTE_SIZE *"
DEF color EQUS "+ PAL_COLOR_SIZE *"
DEF colors EQUS "* PAL_COLOR_SIZE"
DEF palettes EQUS "* PAL_SIZE"
DEF palette EQUS "+ PAL_SIZE *"
DEF color EQUS "+ COLOR_SIZE *"
DEF colors EQUS "* COLOR_SIZE"
DEF tiles EQUS "* LEN_2BPP_TILE"
DEF tile EQUS "+ LEN_2BPP_TILE *"
DEF tiles EQUS "* TILE_SIZE"
DEF tile EQUS "+ TILE_SIZE *"
; extracts the middle two colors from a 2bpp binary palette
; example usage:
; INCBIN "foo.gbcpal", middle_colors
DEF middle_colors EQUS "PAL_COLOR_SIZE, PAL_COLOR_SIZE * 2"
DEF middle_colors EQUS "COLOR_SIZE, COLOR_SIZE * 2"
MACRO dbpixel
if _NARG >= 4

View File

@ -417,3 +417,115 @@ DEF SPRITE_BUENA EQUS "SPRITE_BEAUTY"
DEF PAL_NPC_SILVER EQUS "PAL_NPC_EMOTE"
DEF PAL_OW_SILVER EQUS "PAL_OW_EMOTE"
; constants/hardware.inc (formerly constants/hardware_constants.asm)
DEF MBC3SRamEnable EQU rRAMG
DEF MBC3RomBank EQU rROMB0
DEF MBC3SRamBank EQU rRAMB
DEF MBC3LatchClock EQU rRTCLATCH
DEF MBC3RTC EQU rRTCREG
DEF SRAM_DISABLE EQU RAMG_SRAM_DISABLE
DEF SRAM_ENABLE EQU RAMG_SRAM_ENABLE
DEF RTC_S EQU RAMB_RTC_S
DEF RTC_M EQU RAMB_RTC_M
DEF RTC_H EQU RAMB_RTC_H
DEF RTC_DL EQU RAMB_RTC_DL
DEF RTC_DH EQU RAMB_RTC_DH
DEF RTC_DH_HI EQU B_RAMB_RTC_DH_HIGH
DEF RTC_DH_HALT EQU B_RAMB_RTC_DH_HALT
DEF RTC_DH_OVERFLOW EQU B_RAMB_RTC_DH_CARRY
DEF VBLANK EQU B_IE_VBLANK
DEF LCD_STAT EQU B_IE_STAT
DEF TIMER EQU B_IE_TIMER
DEF SERIAL EQU B_IE_SERIAL
DEF JOYPAD EQU B_IE_JOYPAD
DEF OAM_TILE_BANK EQU B_OAM_BANK1
DEF OAM_OBP_NUM EQU B_OAM_PAL1
DEF OAM_X_FLIP EQU B_OAM_XFLIP
DEF OAM_Y_FLIP EQU B_OAM_YFLIP
DEF OAM_PRIORITY EQU B_OAM_PRIO
DEF PALETTE_MASK EQU OAM_PALETTE
DEF VRAM_BANK_1 EQU OAM_BANK1
DEF OBP_NUM EQU OAM_PAL1
DEF X_FLIP EQU OAM_XFLIP
DEF Y_FLIP EQU OAM_YFLIP
DEF PRIORITY EQU OAM_PRIO
; these bit flags are reversed in meaning
DEF rJOYP_BUTTONS EQU B_JOYP_GET_CTRL_PAD
DEF rJOYP_DPAD EQU B_JOYP_GET_BUTTONS
DEF rSC_ON EQU B_SC_START
DEF rSC_CGB EQU B_SC_SPEED
DEF rSC_CLOCK EQU B_SC_SOURCE
DEF rTAC_ON EQU B_TAC_START
DEF rTAC_4096_HZ EQU TAC_4KHZ
DEF rTAC_262144_HZ EQU TAC_262KHZ
DEF rTAC_65536_HZ EQU TAC_65KHZ
DEF rTAC_16384_HZ EQU TAC_16KHZ
DEF rWave_0 EQU rAUD3WAVE_0
DEF rWave_1 EQU rAUD3WAVE_1
DEF rWave_2 EQU rAUD3WAVE_2
DEF rWave_3 EQU rAUD3WAVE_3
DEF rWave_4 EQU rAUD3WAVE_4
DEF rWave_5 EQU rAUD3WAVE_5
DEF rWave_6 EQU rAUD3WAVE_6
DEF rWave_7 EQU rAUD3WAVE_7
DEF rWave_8 EQU rAUD3WAVE_8
DEF rWave_9 EQU rAUD3WAVE_9
DEF rWave_a EQU rAUD3WAVE_A
DEF rWave_b EQU rAUD3WAVE_B
DEF rWave_c EQU rAUD3WAVE_C
DEF rWave_d EQU rAUD3WAVE_D
DEF rWave_e EQU rAUD3WAVE_E
DEF rWave_f EQU rAUD3WAVE_F
DEF rLCDC_BG_PRIORITY EQU B_LCDC_PRIO
DEF rLCDC_SPRITES_ENABLE EQU B_LCDC_OBJS
DEF rLCDC_SPRITE_SIZE EQU B_LCDC_OBJ_SIZE
DEF rLCDC_BG_TILEMAP EQU B_LCDC_BG_MAP
DEF rLCDC_TILE_DATA EQU B_LCDC_BLOCKS
DEF rLCDC_WINDOW_ENABLE EQU B_LCDC_WINDOW
DEF rLCDC_WINDOW_TILEMAP EQU B_LCDC_WIN_MAP
DEF rLCDC_ENABLE EQU B_LCDC_ENABLE
DEF rLCDMODE EQU rSYS
DEF KEY1_PREPARE EQU B_SPD_PREPARE
DEF KEY1_DBLSPEED EQU B_SPD_DOUBLE
DEF rBLCK EQU rBANK
DEF rRP_LED_ON EQU B_RP_LED_ON
DEF rRP_RECEIVING EQU B_RP_DATA_IN
DEF rRP_ENABLE_READ_MASK EQU RP_ENABLE
DEF rBGPI_AUTO_INCREMENT EQU B_BGPI_AUTOINC
DEF rOBPI_AUTO_INCREMENT EQU B_OBPI_AUTOINC
; constants/gfx_constants.asm
DEF LEN_1BPP_TILE EQU TILE_1BPP_SIZE
DEF LEN_2BPP_TILE EQU TILE_SIZE
DEF NUM_PAL_COLORS EQU PAL_COLORS
DEF PAL_COLOR_SIZE EQU COLOR_SIZE
DEF PALETTE_SIZE EQU PAL_SIZE
DEF BG_MAP_WIDTH EQU TILEMAP_WIDTH
DEF BG_MAP_HEIGHT EQU TILEMAP_HEIGHT
DEF SPRITEOAMSTRUCT_YCOORD EQU OAMA_Y
DEF SPRITEOAMSTRUCT_XCOORD EQU OAMA_X
DEF SPRITEOAMSTRUCT_TILE_ID EQU OAMA_TILEID
DEF SPRITEOAMSTRUCT_ATTRIBUTES EQU OAMA_FLAGS
DEF SPRITEOAMSTRUCT_LENGTH EQU OBJ_SIZE
DEF NUM_SPRITE_OAM_STRUCTS EQU OAM_COUNT

Some files were not shown because too many files have changed in this diff Show More