Menu

Tree [d35b4f] master /
 History

HTTPS access


File Date Author Commit
 bfd 2021-08-17 Michael Singer Michael Singer [d35b4f] Fix warning
 binutils 2021-08-17 Michael Singer Michael Singer [e9f78a] Rename LR35902 to SM83
 config 2018-10-02 Michael Singer Michael Singer [2a54a6] initial commit
 cpu 2018-10-02 Michael Singer Michael Singer [2a54a6] initial commit
 elfcpp 2018-10-02 Michael Singer Michael Singer [2a54a6] initial commit
 etc 2018-10-02 Michael Singer Michael Singer [2a54a6] initial commit
 gas 2021-08-17 Michael Singer Michael Singer [bc1ae0] Accept additional post-inc&dec: "LD (HLI),A"
 gold 2018-10-02 Michael Singer Michael Singer [2a54a6] initial commit
 gprof 2021-08-17 Michael Singer Michael Singer [e9f78a] Rename LR35902 to SM83
 include 2021-08-17 Michael Singer Michael Singer [e9f78a] Rename LR35902 to SM83
 intl 2018-10-02 Michael Singer Michael Singer [2a54a6] initial commit
 ld 2021-08-17 Michael Singer Michael Singer [e9f78a] Rename LR35902 to SM83
 libiberty 2018-10-02 Michael Singer Michael Singer [2a54a6] initial commit
 opcodes 2021-08-17 Michael Singer Michael Singer [bc1ae0] Accept additional post-inc&dec: "LD (HLI),A"
 texinfo 2018-10-02 Michael Singer Michael Singer [2a54a6] initial commit
 zlib 2018-10-02 Michael Singer Michael Singer [2a54a6] initial commit
 .gitignore 2018-10-04 Michael Singer Michael Singer [90ab13] add .gitignore
 COPYING 2018-10-02 Michael Singer Michael Singer [2a54a6] initial commit
 COPYING.LIB 2018-10-02 Michael Singer Michael Singer [2a54a6] initial commit
 COPYING3 2018-10-02 Michael Singer Michael Singer [2a54a6] initial commit
 COPYING3.LIB 2018-10-02 Michael Singer Michael Singer [2a54a6] initial commit
 ChangeLog 2018-10-02 Michael Singer Michael Singer [2a54a6] initial commit
 MAINTAIN-sm83 2021-08-17 Michael Singer Michael Singer [9b1d2c] Add note about autoreconf on CentOS 7
 MAINTAINERS 2018-10-02 Michael Singer Michael Singer [2a54a6] initial commit
 Makefile.def 2018-10-02 Michael Singer Michael Singer [2a54a6] initial commit
 Makefile.in 2018-10-02 Michael Singer Michael Singer [2a54a6] initial commit
 Makefile.tpl 2018-10-02 Michael Singer Michael Singer [2a54a6] initial commit
 README 2021-08-17 Michael Singer Michael Singer [e95866] Update README
 README-binutils 2018-10-05 Michael Singer Michael Singer [923a39] rename README
 README-maintainer-mode 2018-10-02 Michael Singer Michael Singer [2a54a6] initial commit
 ar-lib 2018-10-02 Michael Singer Michael Singer [2a54a6] initial commit
 compile 2018-10-02 Michael Singer Michael Singer [2a54a6] initial commit
 config-ml.in 2018-10-02 Michael Singer Michael Singer [2a54a6] initial commit
 config.guess 2018-10-02 Michael Singer Michael Singer [2a54a6] initial commit
 config.rpath 2018-10-02 Michael Singer Michael Singer [2a54a6] initial commit
 config.sub 2021-08-17 Michael Singer Michael Singer [e9f78a] Rename LR35902 to SM83
 configure 2021-08-17 Michael Singer Michael Singer [e9f78a] Rename LR35902 to SM83
 configure.ac 2018-10-02 Michael Singer Michael Singer [2a54a6] initial commit
 depcomp 2018-10-02 Michael Singer Michael Singer [2a54a6] initial commit
 install-sh 2018-10-02 Michael Singer Michael Singer [2a54a6] initial commit
 libtool.m4 2018-10-02 Michael Singer Michael Singer [2a54a6] initial commit
 ltgcc.m4 2018-10-02 Michael Singer Michael Singer [2a54a6] initial commit
 ltmain.sh 2018-10-02 Michael Singer Michael Singer [2a54a6] initial commit
 ltoptions.m4 2018-10-02 Michael Singer Michael Singer [2a54a6] initial commit
 ltsugar.m4 2018-10-02 Michael Singer Michael Singer [2a54a6] initial commit
 ltversion.m4 2018-10-02 Michael Singer Michael Singer [2a54a6] initial commit
 lt~obsolete.m4 2018-10-02 Michael Singer Michael Singer [2a54a6] initial commit
 makefile.vms 2018-10-02 Michael Singer Michael Singer [2a54a6] initial commit
 md5.sum 2018-10-02 Michael Singer Michael Singer [2a54a6] initial commit
 missing 2018-10-02 Michael Singer Michael Singer [2a54a6] initial commit
 mkdep 2018-10-02 Michael Singer Michael Singer [2a54a6] initial commit
 mkinstalldirs 2018-10-02 Michael Singer Michael Singer [2a54a6] initial commit
 move-if-change 2018-10-02 Michael Singer Michael Singer [2a54a6] initial commit
 setup.com 2018-10-02 Michael Singer Michael Singer [2a54a6] initial commit
 src-release.sh 2018-11-10 Michael Singer Michael Singer [a7f9e6] add README-binutils to src-release.sh
 symlink-tree 2018-10-02 Michael Singer Michael Singer [2a54a6] initial commit
 test-driver 2018-10-02 Michael Singer Michael Singer [2a54a6] initial commit
 ylwrap 2018-10-02 Michael Singer Michael Singer [2a54a6] initial commit

Read Me

Binutils for GameBoy
====================


Build binutils like this:

  ./configure --target=sm83-gb-coff
  make all
  # as root:
  make install


Example file:

  ; Handler for RST28 instruction (max. 8 bytes)
  .section .rst28
    ret

  ; Handler for interrupt 4 (joypad) (max. 8 bytes)
  .section .irq4
    reti

  ; Entry point (max. 4 bytes)
  .section .entry
    nop
    jp start

  ; GameBoy Header
  .section .hdrlogo
    .db 0xCE, 0xED, 0x66, 0x66, 0xCC, 0x0D, 0x00, 0x0B, 0x03, 0x73, 0x00, 0x83, 0x00, 0x0C, 0x00, 0x0D
    .db 0x00, 0x08, 0x11, 0x1F, 0x88, 0x89, 0x00, 0x0E, 0xDC, 0xCC, 0x6E, 0xE6, 0xDD, 0xDD, 0xD9, 0x99
    .db 0xBB, 0xBB, 0x67, 0x63, 0x6E, 0x0E, 0xEC, 0xCC, 0xDD, 0xDC, 0x99, 0x9F, 0xBB, 0xB9, 0x33, 0x3E
  .section .hdrname
    .db "hram-rw"
  .section .hdrgc
    .db "TEST"
  .section .hdrcgb
    .db 0x00
  .section .hdrmc
    .db "ZZ"
  .section .hdrsgb
    .db 0x00
  .section .hdrtype
    .db 0x08
  .section .hdrrom
    .db 0x00
  .section .hdrram
    .db 0x02
  .section .hdrdest
    .db 0x01
  .section .hdrver
    .db 0x00

  ; Code for Bank 0 (starts at 0x150)
  .section .bank0
  start:
  .global start
    di

    call foo  ; call routine in bank 1

    ; Copy routine for initializing HRAM
    ld c, _ehdata
    ld hl, __load_stop_hdata - 1
  loop:
    ld a, _hdata - 1
    dec c
    cp c
    jp z, loop2  ; jumps to address 0xff80
    ld a, (hld)
    ld (c), a
    jr loop

  ; Code loaded into HRAM (starts at 0xff80)
  .section .hdata
  loop2:
    jr loop2

  ; Code for Bank 1 (starts at 0x4000)
  .section bank1
  foo:
    rst 0x28  ; call reset 0x28 handler
    ret


Build example with:

  sm83-gb-coff-as -o example.o example.s
  sm83-gb-coff-ld -o example.gb example.o

Then use rgbfix from the Rednex Game Boy Development System (rgbds):
  rgbfix -fhg example.gb