Browse Source

Initial commit; vertical blank interrupt test.

master
Ian Burgmyer 4 years ago
commit
3d8ec4d4ad
  1. 3
      .gitignore
  2. 33
      Makefile
  3. 10
      PlipTestROMs.sublime-project
  4. 51
      common.lnk
  5. 121
      common/defines.inc
  6. 166
      common/header.inc
  7. 32
      video/vblankInt.s

3
.gitignore vendored

@ -0,0 +1,3 @@
bin/
obj/
*.sublime-workspace

33
Makefile

@ -0,0 +1,33 @@
AS = rgbasm
LD = rgblink
FIX = rgbfix -f hg
BIN_DIR = bin
OBJ_DIR = obj
MKDIR = mkdir
.PHONY: dirs
all: dirs video
clean:
rm -r ${BIN_DIR}/ ${OBJ_DIR}/
dirs:
${MKDIR} -p ${BIN_DIR}
${MKDIR} -p ${OBJ_DIR}
#
# Video
#
video: videoDirs vblankInt.gb
videoDirs:
${MKDIR} -p ${BIN_DIR}/video
${MKDIR} -p ${OBJ_DIR}/video
vblankInt.gb: dirs
${AS} -o ${OBJ_DIR}/video/vblankInt.o video/vblankInt.s
${LD} -l common.lnk -o ${BIN_DIR}/video/vblankInt.gb ${OBJ_DIR}/video/vblankInt.o
${FIX} ${BIN_DIR}/video/vblankInt.gb

10
PlipTestROMs.sublime-project vendored

@ -0,0 +1,10 @@
{
"folders":
[
{
"path": ".",
"file_exclude_patterns": [ "*.sublime-*" ],
"folder_exclude_patterns": [ "bin", "obj" ]
}
]
}

51
common.lnk

@ -0,0 +1,51 @@
ROM0
org $0000
"rst00"
org $0008
"rst08"
org $0010
"rst10"
org $0018
"rst18"
org $0020
"rst20"
org $0028
"rst28"
org $0030
"rst30"
org $0038
"rst38"
org $0040
"intVblank"
org $0048
"intLcdc"
org $0050
"intTimer"
org $0058
"intSerial"
org $0060
"intJoypad"
org $0068
"preHeader"
org $0100
"headerJump"
org $0104
"header"
org $0150
"home"

121
common/defines.inc

@ -0,0 +1,121 @@
;
; Overrides
;
OverrideRst00 SET 0
OverrideRst08 SET 0
OverrideRst10 SET 0
OverrideRst18 SET 0
OverrideRst20 SET 0
OverrideRst28 SET 0
OverrideRst30 SET 0
OverrideRst38 SET 0
OverrideIntVblank SET 0
OverrideIntLcdc SET 0
OverrideIntTimer SET 0
OverrideIntSerial SET 0
OverrideIntJoypad SET 0
OverrideHeaderJump SET 0
;
; Memory Locations
;
HeaderEnd EQU $0150
;
; CGB Flag
;
CgbUnsupported EQU $00
CgbCompatible EQU $80
CgbOnly EQU $C00
HeaderCgbFlag SET CgbUnsupported
;
; SGB Flag
;
SgbUnsupported EQU $00
SgbSupported EQU $03
HeaderSgbFlag SET SgbUnsupported
;
; Cartridge Type
;
CartRomOnly EQU $00
CartMbc1 EQU $01
CartMbc1Ram EQU $02
CartMbc1Battery EQU $03
CartMbc2 EQU $05
CartMbc2Battery EQU $06
CartRomRam EQU $08
CartRomBattery EQU $09
CartMmm01 EQU $0B
CartMmm01Ram EQU $0C
CartMmm01RamBattery EQU $0D
CartMbc3TimerBattery EQU $0F
CartMbc3TimerRamBattery EQU $10
CartMbc3 EQU $11
CartMbc3Ram EQU $12
CartMbc3RamBattery EQU $13
CartMbc4 EQU $15
CartMbc4Ram EQU $16
CartMbc4RamBattery EQU $17
CartMbc5 EQU $19
CartMbc5Ram EQU $1A
CartMbc5RamBattery EQU $1B
CartMbc5Rumble EQU $1C
CartMbc5RumbleRam EQU $1D
CartMbc5RumbleRamBattery EQU $1E
CartPocketCamera EQU $FC
CartBandaiTama5 EQU $FD
CartHuc3 EQU $FE
CartHuc1RamBattery EQU $ff
HeaderCartType SET CartRomOnly
;
; ROM Size
;
Rom32K EQU $00
Rom64K EQU $01
Rom128K EQU $02
Rom256K EQU $03
Rom512K EQU $04
Rom1024K EQU $05
Rom2048K EQU $06
Rom4096K EQU $07
Rom1152K EQU $52
Rom1280K EQU $53
Rom1536K EQU $54
HeaderRomSize SET Rom32K
;
; RAM Size
;
RamNone EQU $00
Ram2K EQU $01
Ram8K EQU $02
Ram32K EQU $02
HeaderRamSize SET RamNone
;
; Destination Code
;
DestinationJapan EQU $00
DestinationInternational EQU $01
HeaderDestinationCode SET DestinationInternational
;
; Old Licensee Code
;
HeaderOldLicensee SET $33
;
; Mask ROM Version
;
HeaderMaskRomVersion SET $00

166
common/header.inc

@ -0,0 +1,166 @@
; 0000-003F : RST Handlers
IF OverrideRst00 == 0
SECTION "rst00", ROM0
ret
REPT 7
nop
ENDR
ENDC
IF OverrideRst08 == 0
SECTION "rst08", ROM0
ret
REPT 7
nop
ENDR
ENDC
IF OverrideRst10 == 0
SECTION "rst10", ROM0
ret
REPT 7
nop
ENDR
ENDC
IF OverrideRst18 == 0
SECTION "rst18", ROM0
ret
REPT 7
nop
ENDR
ENDC
IF OverrideRst20 == 0
SECTION "rst20", ROM0
ret
REPT 7
nop
ENDR
ENDC
IF OverrideRst28 == 0
SECTION "rst28", ROM0
ret
REPT 7
nop
ENDR
ENDC
IF OverrideRst30 == 0
SECTION "rst30", ROM0
ret
REPT 7
nop
ENDR
ENDC
IF OverrideRst38 == 0
SECTION "rst38", ROM0
ret
REPT 7
nop
ENDR
ENDC
; 0040-0067 : Interrupt Handlers
IF OverrideIntVblank == 0
SECTION "intVblank", ROM0
reti
REPT 7
nop
ENDR
ENDC
IF OverrideIntLcdc == 0
SECTION "intLcdc", ROM0
reti
REPT 7
nop
ENDR
ENDC
IF OverrideIntTimer == 0
SECTION "intTimer", ROM0
reti
REPT 7
nop
ENDR
ENDC
IF OverrideIntSerial == 0
SECTION "intSerial", ROM0
reti
REPT 7
nop
ENDR
ENDC
IF OverrideIntJoypad == 0
SECTION "intJoypad", ROM0
reti
REPT 7
nop
ENDR
ENDC
; 0068-00FF : Undefined
SECTION "preHeader", ROM0
; 0100-0103 : Jump Past Header
IF OverrideHeaderJump == 0
SECTION "headerJump", ROM0
nop
jp HeaderEnd
ENDC
; ----------------------
; 0104-014F : ROM Header
; ----------------------
SECTION "header", ROM0
; 0104-0133 : Nintendo Logo
DB $CE, $ED, $66, $66, $CC, $0D, $00, $0B, $03, $73, $00, $83, $00, $0C, $00, $0D
DB $00, $08, $11, $1F, $88, $89, $00, $0E, $DC, $CC, $6E, $E6, $DD, $DD, $D9, $99
DB $BB, $BB, $67, $63, $6E, $0E, $EC, $CC, $DD, $DC, $99, $9F, $BB, $B9, $33, $3E
; 0134-013E : Title
STATIC_ASSERT STRLEN(HeaderTitle) <= 13, "Header title is too large!" ; 11 characters + 2 quotes
DB HeaderTitle
DS 11 - STRLEN(HeaderTitle)
; 013F-0142 : Manufacturer Code
DS 4
; 0143 : CGB Flag
DB HeaderCgbFlag
; 0144-0145 : New Licensee Code
DB "HI"
; 0146 : SGB Flag
DB HeaderSgbFlag
; 0147 : Cartridge Type
DB HeaderCartType
; 0148 : ROM Size
DB HeaderRomSize
; 0149 : RAM Size
DB HeaderRamSize
; 014A : Destination Code
DB HeaderDestinationCode
; 014B : Old Licensee Code
DB HeaderOldLicensee
; 014C : Mask ROM Version Number
DB HeaderMaskRomVersion
; 014D : Header Checksum
DS 1
; 014E-014F : Global Checksum
DS 2

32
video/vblankInt.s

@ -0,0 +1,32 @@
HeaderTitle EQUS "\"BUILDTEST\""
include "common/defines.inc"
OverrideIntVblank SET 1
include "common/header.inc"
SECTION "intVblank", ROM0
ld a, [hl]
xor a, $ff
ld [hli], a
reti
SECTION "home", ROM0
ld a, %00011011
ld [$ff47], a
ei
ld a, %11100001
ld [$ffff], a
ld a, 127
ld b, 0
reset:
ld hl, $8010
ld d, 48 * 4
loop:
halt
dec d
jr z, reset
jr loop
Loading…
Cancel
Save