Skip to content

Commit

Permalink
Add default_rom and symbols to make build
Browse files Browse the repository at this point in the history
  • Loading branch information
Baekalfen committed Mar 17, 2024
1 parent 930bcc7 commit 79391e2
Show file tree
Hide file tree
Showing 15 changed files with 132 additions and 39 deletions.
10 changes: 5 additions & 5 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -82,14 +82,14 @@ PyBoy-RL/
# Bootrom
extras/bootrom/bootrom*.map
extras/bootrom/bootrom*.obj
extras/bootrom/bootrom*.sym
extras/bootrom/bootrom*.gb
extras/bootrom/logo.asm

extras/default_rom/default_rom.map
extras/default_rom/default_rom.obj
extras/default_rom/default_rom.sym
!default_rom.gb
extras/default_rom/default_rom*.map
extras/default_rom/default_rom*.obj
!default_rom*.gb
extras/default_rom/default_rom.gb
extras/default_rom/default_rom_cgb.gb

test.replay

Expand Down
4 changes: 4 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,14 @@ codecov: clean

build:
@echo "Building..."
cd ${ROOT_DIR}/extras/default_rom && $(MAKE)
cd ${ROOT_DIR}/extras/bootrom && $(MAKE)
CFLAGS=$(CFLAGS) ${PY} setup.py build_ext -j $(shell getconf _NPROCESSORS_ONLN) --inplace

clean:
@echo "Cleaning..."
cd ${ROOT_DIR}/extras/default_rom && $(MAKE) clean
cd ${ROOT_DIR}/extras/bootrom && $(MAKE) clean
rm -rf PyBoy.egg-info
rm -rf build
rm -rf dist
Expand Down
2 changes: 1 addition & 1 deletion extras/bootrom/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -20,4 +20,4 @@ build:
head -c 256 bootrom_cgb.gb > ${ROOT_DIR}/pyboy/core/bootrom_cgb.bin

clean:
rm logo.asm bootrom_*.map bootrom_*.sym bootrom_*.obj bootrom_*.gb
rm -f logo.asm bootrom_*.map bootrom_*.obj bootrom_*.gb
20 changes: 20 additions & 0 deletions extras/bootrom/bootrom_cgb.sym
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
; File generated by rgblink
00:0000 main
00:0006 main.erase
00:0015 main.memcpy
00:002c main.four_range
00:0059 main.wait_vblank
00:006c main.no_effect
00:0071 main.play_sound
00:007e main.adj_sound
00:0087 main.wave_table
00:0097 main.effect
00:00a5 main.exit_vblank
00:00bb main.logo
00:00bb main.P1
00:00c3 main.P2
00:00cb main.Y1
00:00d3 main.B2
00:00db main.O
00:00e3 main.Y2
00:00fc exit
20 changes: 20 additions & 0 deletions extras/bootrom/bootrom_dmg.sym
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
; File generated by rgblink
00:0000 main
00:0006 main.erase
00:0015 main.memcpy
00:002c main.four_range
00:0059 main.wait_vblank
00:006c main.no_effect
00:0071 main.play_sound
00:007e main.adj_sound
00:0087 main.wave_table
00:0097 main.effect
00:00a5 main.exit_vblank
00:00bb main.logo
00:00bb main.P1
00:00c3 main.P2
00:00cb main.Y1
00:00d3 main.B2
00:00db main.O
00:00e3 main.Y2
00:00fc exit
13 changes: 10 additions & 3 deletions extras/default_rom/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,15 @@ ROOT_DIR := $(shell git rev-parse --show-toplevel)

build:
rgbasm -o default_rom.obj default_rom.asm
rgblink -m default_rom.map -n default_rom.sym -o ${ROOT_DIR}/pyboy/default_rom.gb default_rom.obj
rgbfix -p0 -f hg ${ROOT_DIR}/pyboy/default_rom.gb
rgblink -m default_rom.map -n default_rom.sym -o default_rom.gb default_rom.obj
rgbfix -p0 -f hg default_rom.gb
cp default_rom.gb ${ROOT_DIR}/pyboy/default_rom.gb

rgbasm -o default_rom_cgb.obj default_rom_cgb.asm
rgblink -m default_rom_cgb.map -n default_rom_cgb.sym -o default_rom_cgb.gb default_rom_cgb.obj
rgbfix -p0 -f hg default_rom_cgb.gb
cp default_rom_cgb.gb ${ROOT_DIR}/pyboy/default_rom_cgb.gb

clean:
rm default_rom.map default_rom.sym default_rom.obj
rm -f default_rom.map default_rom.obj
rm -f default_rom_cgb.map default_rom_cgb.obj
13 changes: 11 additions & 2 deletions extras/default_rom/default_rom.asm
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ EntryPoint:
jp Main

SECTION "Title", ROM0[$134]
db "NO-ROM"
db "DEFAULT-ROM"

SECTION "Tileset", ROM0
Tileset:
Expand All @@ -17,6 +17,15 @@ Tilemap:
db $40, $41, $42, $43, $44, $45, $46, $41, $41, $41, $47, $41, $41, $41
db $48, $49, $4A, $4B, $4C, $4D, $4E, $49, $4F, $50, $51, $41, $41, $41

SECTION "CartridgeType", ROM0[$147]
db $11

SECTION "CartridgeROMCount", ROM0[$148]
db $00

SECTION "CartridgeRAMCount", ROM0[$149]
db $05

SECTION "Main", ROM0[$150]
Main:
nop
Expand All @@ -38,7 +47,7 @@ Main:
ld [hl], 144
inc hl
ld [hl], 43

ld bc, $8400
ld de, $8700
ld hl, Tileset
Expand Down
13 changes: 13 additions & 0 deletions extras/default_rom/default_rom.sym
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
; File generated by rgblink
00:0000 Tilemap
00:0100 EntryPoint
00:0150 Main
00:0155 Main.waitVBlank
00:015c Main.setup
00:0174 Main.readTileset
00:0187 Main.readTilemap
00:01a0 Main.clearOAM
00:01ab Main.loop
00:01bb Main.sync
00:01c2 Main.move
00:01cd Tileset
4 changes: 4 additions & 0 deletions extras/default_rom/default_rom_cgb.asm
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
INCLUDE "default_rom.asm"

SECTION "CGB Flag", ROM0[$143]
db $80
13 changes: 13 additions & 0 deletions extras/default_rom/default_rom_cgb.sym
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
; File generated by rgblink
00:0000 Tilemap
00:0100 EntryPoint
00:0150 Main
00:0155 Main.waitVBlank
00:015c Main.setup
00:0174 Main.readTileset
00:0187 Main.readTilemap
00:01a0 Main.clearOAM
00:01ab Main.loop
00:01bb Main.sync
00:01c2 Main.move
00:01cd Tileset
54 changes: 27 additions & 27 deletions extras/default_rom/hardware.inc
Original file line number Diff line number Diff line change
@@ -1,29 +1,29 @@
; hardware.inc
rP1 EQU $FF00
rSB EQU $FF01
rSC EQU $FF02
rDIV EQU $FF04
rTIMA EQU $FF05
rTMA EQU $FF06
rTAC EQU $FF07
rIF EQU $FF0F
rLCDC EQU $FF40
rSTAT EQU $FF41
rSCY EQU $FF42
rSCX EQU $FF43
rLY EQU $FF44
rLYC EQU $FF45
rDMA EQU $FF46
rBGP EQU $FF47
rOBP0 EQU $FF48
rOBP1 EQU $FF49
rWY EQU $FF4A
rWX EQU $FF4B
rIE EQU $FFFF
DEF rP1 EQU $FF00
DEF rSB EQU $FF01
DEF rSC EQU $FF02
DEF rDIV EQU $FF04
DEF rTIMA EQU $FF05
DEF rTMA EQU $FF06
DEF rTAC EQU $FF07
DEF rIF EQU $FF0F
DEF rLCDC EQU $FF40
DEF rSTAT EQU $FF41
DEF rSCY EQU $FF42
DEF rSCX EQU $FF43
DEF rLY EQU $FF44
DEF rLYC EQU $FF45
DEF rDMA EQU $FF46
DEF rBGP EQU $FF47
DEF rOBP0 EQU $FF48
DEF rOBP1 EQU $FF49
DEF rWY EQU $FF4A
DEF rWX EQU $FF4B
DEF rIE EQU $FFFF

_VRAM EQU $8000
_SCRN0 EQU $9800
_SCRN1 EQU $9C00
_RAM EQU $C000
_HRAM EQU $FF80
_OAMRAM EQU $FE00
DEF _VRAM EQU $8000
DEF _SCRN0 EQU $9800
DEF _SCRN1 EQU $9C00
DEF _RAM EQU $C000
DEF _HRAM EQU $FF80
DEF _OAMRAM EQU $FE00
Binary file modified pyboy/default_rom.gb
Binary file not shown.
Binary file added pyboy/default_rom_cgb.gb
Binary file not shown.
2 changes: 1 addition & 1 deletion tests/test_basics.py
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@ def test_record_replay(boot_rom, default_rom):

os.remove(default_rom + ".replay")

assert digest == b"\xc0\xfe\x0f\xaa\x1b0YY\x1a\x174\x8c\xad\xeaDZ\x1dQ\xa8\xa2\x9fA\xaap\x15(\xc9\xd9#\xd4]{", \
assert digest == (b'r\x80\x19)\x1a\x88\r\xcc\xb9\xab\xa3\xda\xb1&i\xc8"\xc2\xfb\x8a\x01\x9b\xa81@\x92V=5\x92\\5'), \
"The replay did not result in the expected output"


Expand Down
3 changes: 3 additions & 0 deletions tests/test_replay.py
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,9 @@ def replay(
):
with open(replay, "rb") as f:
recorded_input, b64_romhash, b64_state = json.loads(zlib.decompress(f.read()).decode("ascii"))
if ROM.endswith("default_rom.gb"):
# Hotfixing replay as compiler has changed
b64_romhash = "0sJieqcWfVjl4LAHLZFzcU3hRoIfQ6n0UQLd7RkZh/k="

verify_file_hash(ROM, b64_romhash)
state_data = io.BytesIO(base64.b64decode(b64_state.encode("utf8"))) if b64_state is not None else None
Expand Down

0 comments on commit 79391e2

Please sign in to comment.