pokecarde/macros.asm
2025-02-08 23:46:24 -07:00

319 lines
4.2 KiB
NASM
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

; some Z80 opcodes arent 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 ; dont 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 Korths 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