Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; Payload for Pokemon Red/Blue serial transfer buffer overload
- ; Listens for data from serial port, then puts that data sequentially
- ; in the cartridge's SRAM before resetting the game
- ; Assemble using RGBDS, then read from $150-$212
- SECTION "Program Start",HOME[$0150]
- Boot::
- ld a, [$ffff]
- and $f7
- ld [$ffff], a ; Disable Serial interrupt
- ld a, $81
- ld [$ff02],a ; Send an echo of last byte
- ld a, $ff
- call $23b1 ; Stop music
- call $190f ; Clear screen
- ld a, $aa
- ld [$d0b5], a
- ld [$cf91], a
- call $1537 ; Load properties of Porygon
- ld hl, $c3cf
- call $1384 ; Display Porygon's sprite
- ld a, $aa
- call $13d0 ; Play Porygon's cry
- ld c, $02
- ld a, $e5
- call $23a1 ; Play trade music
- ld hl, $c490
- ld bc, $0412
- call $5ab3 ; Display text box border
- xor a
- ld [$d358], a ; Zero delay text
- ld de, .tex + $c486 ; Adjustment for payload location
- ld hl, $c4b9
- call $1955 ; Print "Transferring data."
- ld hl, $c4e2 ; Display an empty progress bar below text
- ld a, $63 ; (uses tiles from HP bar)
- ld d, $10
- .loadbar
- ld [hli], a
- dec d
- jr nz, .loadbar
- ld a, $a
- ld [$0000], a ; Enable SRAM
- ld a, $1
- ld [$6000], a ; SRAM banking mode
- ld de, $0000
- .loop ; Main loop, loads 32768 bytes from Serial Transfer into SRAM
- ld hl, $a000
- ld bc, $2000
- ld a, d
- ld [$4000], a ; SRAM bank
- .read
- ld a, $81
- ld [$ff02], a
- .waitloop1
- ld a, [$ff02]
- and $80
- jr nz, .waitloop1
- ld a, [$ff01]
- ld [hli], a
- dec e
- jr z, .updatebar ; Update progress bar every 256 cycles
- .return
- dec bc
- ld a, b
- or c
- jr nz, .read
- inc d
- ld a, $4
- cp d
- jr nz, .loop
- xor a
- ld [$0000], a ; Disable SRAM
- ld [$6000], a ; Disable SRAM banking
- ld a, $81
- ld [$ff02],a ; Send an echo of last byte
- jp $1F54 ; Reset game
- .updatebar
- push hl
- ld hl, $c4e2
- .loadnext
- ld a, [hl]
- cp $6B
- jr nz, .inctile
- inc hl
- jr .loadnext
- .inctile
- inc a
- ld [hl], a
- pop hl
- jr .return
- .tex
- db $91,$a4,$a2,$a4,$a8,$b5,$a8,$ad ; Receiving data
- db $a6,$7f,$a3,$a0,$e8,$e8,$e8,$50
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement