mirror of
https://github.com/Artrios/pokecarde.git
synced 2026-03-21 17:24:35 -05:00
319 lines
4.2 KiB
NASM
319 lines
4.2 KiB
NASM
; some Z80 opcodes aren’t supported by Game Boy,
|
||
; but are used in e-Reader programs
|
||
|
||
; ld [\1], hl
|
||
MACRO LD_IND_HL
|
||
db $22, (\1 & $FF), (\1 >> 8)
|
||
ENDM
|
||
; ld [\1], a
|
||
MACRO LD_IND_A
|
||
db $32, (\1 & $FF), (\1 >> 8)
|
||
ENDM
|
||
|
||
; ld hl, [\1]
|
||
MACRO LD_HL_IND
|
||
db $2A, (\1 & $FF), (\1 >> 8)
|
||
ENDM
|
||
; ld a, [\1]
|
||
MACRO LD_A_IND
|
||
db $3A
|
||
dw \1
|
||
ENDM
|
||
|
||
MACRO waita
|
||
ld a, \1
|
||
db $76
|
||
ENDM
|
||
; ld [hl], a
|
||
MACRO LD_IND_HL_A
|
||
db $77
|
||
ENDM
|
||
|
||
; ld a, [hl]
|
||
MACRO LD_IND_A_HL
|
||
db $7E
|
||
ENDM
|
||
|
||
; ld c, [hl]
|
||
MACRO LD_IND_C_HL
|
||
db $4E
|
||
ENDM
|
||
|
||
; ld b, [hl]
|
||
MACRO LD_IND_B_HL
|
||
db $46
|
||
ENDM
|
||
|
||
; ld l, [hl]
|
||
MACRO LD_IND_L_HL
|
||
db $6E
|
||
ENDM
|
||
|
||
; ld e, [hl]
|
||
MACRO LD_IND_E_HL
|
||
db $5E
|
||
ENDM
|
||
|
||
; ld d, [hl]
|
||
MACRO LD_IND_D_HL
|
||
db $56
|
||
ENDM
|
||
|
||
; ld [hl], c
|
||
MACRO LD_IND_HL_C
|
||
db $71
|
||
ENDM
|
||
|
||
; ld [hl], b
|
||
MACRO LD_IND_HL_B
|
||
db $70
|
||
ENDM
|
||
|
||
; ld a, [de]
|
||
MACRO LD_IND_A_DE
|
||
db $1A
|
||
ENDM
|
||
|
||
; add a, [hl]
|
||
MACRO ADD_A_HL_IND
|
||
db $86
|
||
ENDM
|
||
|
||
MACRO EX_DE_HL
|
||
db $EB
|
||
ENDM
|
||
|
||
MACRO wait
|
||
db $D3, \1
|
||
ENDM
|
||
|
||
MACRO API
|
||
db ($C7 + (\1 & $100) >> 5), (\1 & $FF) ; $C7 for API $0xx, $CF for API $1xx
|
||
ENDM
|
||
|
||
|
||
|
||
MACRO dd
|
||
dw (\1) & $FFFF
|
||
dw (\1) >> 16
|
||
ENDM
|
||
|
||
MACRO RGB
|
||
dw (\1) | ((\2) << 5) | ((\3) << 10)
|
||
ENDM
|
||
|
||
MACRO GBAPTR
|
||
dd $02000000 + \1 - ScriptBaseAddress
|
||
ENDM
|
||
|
||
MACRO Insert_Prologue
|
||
db "GameFreak inc."
|
||
db 0,0,0,0,0,0
|
||
dd \1
|
||
db \2
|
||
REPT 8 - STRLEN(\2)
|
||
db 0
|
||
ENDR
|
||
db 0,0,0,0,$01,$55
|
||
db 0,0,0,0
|
||
db \3
|
||
db 0
|
||
db "GameFreak inc."
|
||
db 0,0
|
||
ENDM
|
||
|
||
MACRO Mystery_Event
|
||
DEF ScriptBaseAddress EQU $100
|
||
SECTION "mysteryevent", ROM0[$100]
|
||
db $01
|
||
dd $02000000
|
||
db REGION,0,REGION,0,0,0,$04,0,$80,$01,0,0
|
||
ENDM
|
||
|
||
DEF REGION_JP EQU $01
|
||
DEF REGION_EN EQU $02
|
||
DEF REGION_FR EQU $03 ; ?
|
||
DEF REGION_IT EQU $04 ; ?
|
||
DEF REGION_DE EQU $05 ; !
|
||
DEF REGION_ES EQU $07 ; ¿?
|
||
|
||
; types of card data
|
||
DEF END_OF_CHUNKS EQU $02
|
||
DEF LOADING_MESSAGE EQU $03
|
||
DEF SET_LOAD_STATUS EQU $04
|
||
DEF PRELOAD_SCRIPT EQU $05
|
||
DEF IN_GAME_SCRIPT EQU $06
|
||
DEF CUSTOM_BERRY EQU $07
|
||
DEF AWARD_RIBBON EQU $08
|
||
DEF NATIONAL_POKEDEX EQU $09
|
||
DEF ADD_RARE_WORD EQU $0A
|
||
DEF MIX_RECORDS_ITEM EQU $0B
|
||
DEF GIVE_POKEMON EQU $0C
|
||
DEF BATTLE_TRAINER EQU $0D
|
||
DEF CLOCK_ADJUSTMENT EQU $0E
|
||
DEF CHECKSUM_BYTES EQU $0F ; don’t use this
|
||
DEF CHECKSUM_CRC EQU $10 ; use this instead
|
||
DEF DOME_TRAINER EQU $11 ; Battle Dome trainer
|
||
|
||
; an FF byte followed by 00s will flag the end of the program so that it can
|
||
; be extracted automatically from the Game Boy ROM that rgbds tries to build
|
||
MACRO EOF
|
||
db $FF
|
||
ENDM
|
||
|
||
|
||
; names for some API functions based on Martin Korth’s GBATEK
|
||
; http://problemkaputt.de/gbatek.htm
|
||
MACRO FadeIn
|
||
ld a, \1
|
||
API $000
|
||
ENDM
|
||
MACRO SetBackgroundAutoScroll
|
||
ld bc, \1
|
||
ld de, \2
|
||
xor a
|
||
API $012
|
||
ENDM
|
||
MACRO SetBackgroundMode
|
||
ld e, \1
|
||
push de
|
||
xor a
|
||
API $019
|
||
ENDM
|
||
MACRO API_02C
|
||
ld hl, $0000
|
||
push hl
|
||
ld bc, \1
|
||
ld de, \2
|
||
IF \3 == 0
|
||
xor a ; save a byte
|
||
ELSE
|
||
ld a, \3
|
||
ENDC
|
||
API $02C
|
||
ENDM
|
||
MACRO LoadCustomBackground
|
||
ld de, \1
|
||
IF \2 == 0
|
||
xor a ; save a byte
|
||
ELSE
|
||
ld a, \2
|
||
ENDC
|
||
API $02D
|
||
ENDM
|
||
MACRO SetSpritePos
|
||
ld bc, \3
|
||
ld de, \2
|
||
LD_HL_IND \1
|
||
API $032
|
||
ENDM
|
||
MACRO SpriteShow
|
||
LD_HL_IND \1
|
||
API $046
|
||
ENDM
|
||
MACRO SpriteHide
|
||
LD_HL_IND \1
|
||
API $047
|
||
ENDM
|
||
MACRO SpriteMirrorToggle
|
||
ld e, \1
|
||
LD_HL_IND \2
|
||
API $048
|
||
ENDM
|
||
MACRO CreateCustomSprite
|
||
ld e, \2
|
||
ld hl, \3
|
||
API $04D
|
||
LD_IND_HL \1
|
||
ENDM
|
||
MACRO SpriteAutoScaleUntilSize
|
||
ld c, \2
|
||
ld de, \3
|
||
LD_HL_IND \1
|
||
API $05B
|
||
ENDM
|
||
MACRO SetBackgroundPalette
|
||
ld c, \1
|
||
ld de, \2
|
||
ld hl, \3
|
||
API $07E
|
||
ENDM
|
||
MACRO API_084
|
||
ld l, \4
|
||
push hl
|
||
ld bc, \3
|
||
ld de, \2
|
||
LD_HL_IND \1
|
||
API $084
|
||
ENDM
|
||
MACRO CreateRegion
|
||
ld bc, (\2 << 8 + \3)
|
||
ld de, (\4 << 8 + \5)
|
||
ld hl, (\6 << 8 + \7)
|
||
API $090
|
||
LD_IND_A \1
|
||
ENDM
|
||
MACRO SetRegionColor
|
||
ld e, \2
|
||
LD_A_IND \1
|
||
API $091
|
||
ENDM
|
||
MACRO CLEAR_REGION
|
||
LD_A_IND \1
|
||
API $092
|
||
ENDM
|
||
MACRO SetTextColor
|
||
ld de, (\2 << 8 + \3)
|
||
LD_A_IND \1
|
||
API $098
|
||
ENDM
|
||
MACRO DrawText
|
||
CLEAR_REGION \1
|
||
ld bc, \2
|
||
ld de, (\3 << 8 + \4)
|
||
LD_A_IND \1
|
||
API $099
|
||
ENDM
|
||
MACRO SetTextSize
|
||
API $09A
|
||
ENDM
|
||
MACRO API_09B
|
||
ld de, \2
|
||
LD_A_IND \1
|
||
API $09B
|
||
ENDM
|
||
MACRO GetTextWidth
|
||
ld de, \2
|
||
LD_A_IND \1
|
||
API $0C0
|
||
ENDM
|
||
MACRO API_0C7
|
||
ld hl, \1
|
||
API $0C7
|
||
ENDM
|
||
MACRO EXIT
|
||
API $100
|
||
ENDM
|
||
MACRO API_106
|
||
ld de, \1
|
||
ld hl, \2
|
||
API $106
|
||
ENDM
|
||
MACRO SOUND_PAUSE
|
||
API $116
|
||
ENDM
|
||
MACRO IS_SOUND_PLAYING
|
||
API $08D
|
||
ld b, $00
|
||
ld e, $01
|
||
ld hl, $0006
|
||
API $119
|
||
ld a, \1
|
||
EXIT
|
||
ENDM
|
||
MACRO API_121
|
||
ld de, $0000
|
||
ld hl, $0000
|
||
API $121
|
||
ENDM
|