.ROMBANKMAP BANKSTOTAL 4 BANKSIZE $70 BANKS 1 BANKSIZE $4000 BANKS 3 .ENDRO .MEMORYMAP SLOTSIZE $4000 DEFAULTSLOT 0 SLOT 0 $0000 SLOT 1 $4000 .ENDME ; gbs_wrap.s .DB "GBS" ; ident .DB 1 ; version .DB 1 ; track count .DB 1 ; first track .DW $0000 ; load address .DW INIT ; init address .DW PLAY ; play address .DW $FEFF ; stack pointer .DB 0 ; timer modulo .DB 0 ; timer control .ORG $10 ; title .DB "TITLE", 0 .ORG $30 ; author .DB "AUTHOR", 0 .ORG $50 ; copyright .DB "COPYRIGHT", 0 .EMPTYFILL $c9 ; ret. .DEFINE Clock $C000 .BANK 1 SLOT 0 .ORG $0 .SECTION "Main" FORCE LOAD: INIT: ld HL, $FF26 ld A, $80 ; sound enable ldd (HL), A ld A, %11111111 ; pan ldd (HL), A ld A, %01110111 ; master volume ldd (HL), A ld A, $40 ldh ($11), A ; pulse duty / length ldh ($16), A ld A, $C4 ldh ($12), A ; volume ld A, $95 ldh ($17), A ld HL, Clock ld (HL), 1 inc HL ld (HL), $3F ret PLAY: ld HL, Clock ld A, (HL) dec A jr z, + ld (HL), A ret + ld A, 6 ldi (HL), A ld A, (HL) inc A and $3F ld (HL), A ld B, 0 ld C, A ld HL, cir_pu1 add HL, BC ld A, (HL) cp $FF jr z, + rlca ld D, 0 ld E, A ld HL, gb_periods add HL, DE ldi A, (HL) ldh ($13), A ldi A, (HL) ld E, $80 or E ldh ($14), A + ld HL, cir_pu2 add HL, BC ld A, (HL) cp $FF jr z, + rlca ld D, 0 ld E, A ld HL, gb_periods add HL, DE ldi A, (HL) ldh ($18), A ldi A, (HL) ld E, $80 or E ldh ($19), A + ret .ENDS cir_pu1: .DB $30, -1, -1, $2E, -1, -1, $30, -1 .DB $33, -1, -1, -1, -1, -1, -1, -1 .DB $30, -1, $2E, -1, $30, -1, $33, -1 .DB -1, -1, $35, -1, $30, -1, $2E, -1 .DB $30, -1, $2E, -1, $30, -1, $33, -1 .DB -1, -1, -1, -1, -1, -1, -1, -1 .DB $30, -1, $2E, -1, $30, -1, $37, -1 .DB -1, -1, $37, -1, $35, -1, -1, -1 cir_pu2: .DB $27, -1, -1, $27, -1, -1, $27, -1 .DB $30, -1, -1, -1, -1, -1, -1, -1 .DB $27, -1, $27, -1, $27, -1, $30, -1 .DB -1, -1, $30, -1, $2b, -1, $2B, -1 .DB $27, -1, $27, -1, $27, -1, $30, -1 .DB -1, -1, -1, -1, -1, -1, -1, -1 .DB $27, -1, $27, -1, $27, -1, $33, -1 .DB -1, -1, $33, -1, $32, -1, -1, -1 gb_periods: .DW $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000, $0000 .DW $002C, $009D, $0107, $016B, $01C9, $0223, $0277, $02C7, $0312, $0358, $039B, $03DA .DW $0416, $044E, $0483, $04B5, $04E5, $0511, $053B, $0563, $0589, $05AC, $05CE, $05ED .DW $060B, $0627, $0642, $065B, $0672, $0689, $069E, $06B2, $06C4, $06D6, $06E7, $06F7 .DW $0706, $0714, $0721, $072D, $0739, $0744, $074F, $0759, $0762, $076B, $0773, $077B .DW $0783, $078A, $0790, $0797, $079D, $07A2, $07A7, $07AC, $07B1, $07B6, $07BA, $07BE .DW $07C1, $07C5, $07C8, $07CB, $07CE, $07D1, $07D4, $07D6, $07D9, $07DB, $07DD, $07DF .DW $07E1, $07E2, $07E4, $07E6, $07E7, $07E9, $07EA, $07EB, $07EC, $07ED, $07EE, $07EF ; WLA DX is not actually designed with producing non-ROM files in mind