diff --git a/dump.bat b/dump.bat index fb5ec47..1996735 100644 --- a/dump.bat +++ b/dump.bat @@ -1,11 +1,15 @@ cargo build --examples +arm-none-eabi-objdump --headers --disassemble --demangle --architecture=armv4t --no-show-raw-insn -Mreg-names-std target/thumbv4t-none-eabi/debug/examples/basic_keyinput >target/ex-basic_keyinput.txt + arm-none-eabi-objdump --headers --disassemble --demangle --architecture=armv4t --no-show-raw-insn -Mreg-names-std target/thumbv4t-none-eabi/debug/examples/do_nothing >target/ex-do_nothing.txt -arm-none-eabi-objdump --headers --disassemble --demangle --architecture=armv4t --no-show-raw-insn -Mreg-names-std target/thumbv4t-none-eabi/debug/examples/basic_keyinput >target/ex-basic_keyinput.txt +arm-none-eabi-objdump --headers --disassemble --demangle --architecture=armv4t --no-show-raw-insn -Mreg-names-std target/thumbv4t-none-eabi/debug/examples/mode0 >target/ex-mode0.txt arm-none-eabi-objdump --headers --disassemble --demangle --architecture=armv4t --no-show-raw-insn -Mreg-names-std target/thumbv4t-none-eabi/debug/examples/mode3 >target/ex-mode3.txt arm-none-eabi-objdump --headers --disassemble --demangle --architecture=armv4t --no-show-raw-insn -Mreg-names-std target/thumbv4t-none-eabi/debug/examples/mode4 >target/ex-mode4.txt arm-none-eabi-objdump --headers --disassemble --demangle --architecture=armv4t --no-show-raw-insn -Mreg-names-std target/thumbv4t-none-eabi/debug/examples/mode5 >target/ex-mode5.txt + +arm-none-eabi-objdump --headers --disassemble --demangle --architecture=armv4t --no-show-raw-insn -Mreg-names-std target/thumbv4t-none-eabi/debug/examples/paddle_ball >target/ex-paddle_ball.txt diff --git a/examples/paddle_ball.rs b/examples/paddle_ball.rs index 9a7f558..0187f45 100644 --- a/examples/paddle_ball.rs +++ b/examples/paddle_ball.rs @@ -6,13 +6,15 @@ #![no_std] #![no_main] +use core::ptr::addr_of; + use gba::{ asm_runtime::USER_IRQ_HANDLER, bios::VBlankIntrWait, gba_cell::GbaCell, mmio::{ DISPCNT, DISPSTAT, DMA3_CONTROL, DMA3_DESTINATION, DMA3_SOURCE, - DMA3_TRANSFER_COUNT, IE, IME, KEYINPUT, MODE3_VRAM, + DMA3_TRANSFER_COUNT, IE, IME, KEYINPUT, MODE3_VRAM, OBJ_PALRAM, }, video::{Color, DisplayControl, DisplayStatus}, IrqBits, KeyInput, @@ -147,8 +149,8 @@ fn main() -> ! { extern "C" fn draw_sprites(_bits: IrqBits) { unsafe { // Clear VRAM using DMA3 - let x = &0_u32; - DMA3_SOURCE.write((x as *const u32).cast()); + let x: u32 = 0 * OBJ_PALRAM.index(0).read().0 as u32; + DMA3_SOURCE.write(addr_of!(x).cast()); DMA3_DESTINATION.write(MODE3_VRAM.as_usize() as *mut _); DMA3_TRANSFER_COUNT.write(240 * 160 / 2); DMA3_CONTROL.write(1 << 15 | 1 << 10 | 2 << 7);