Skip to content

Commit

Permalink
DMA source mode *must* be inc if the source addr is in ROM.
Browse files Browse the repository at this point in the history
  • Loading branch information
Lokathor committed May 26, 2024
1 parent 2c04eec commit 44e38ee
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 4 deletions.
6 changes: 5 additions & 1 deletion dump.bat
Original file line number Diff line number Diff line change
@@ -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
8 changes: 5 additions & 3 deletions examples/paddle_ball.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down Expand Up @@ -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);
Expand Down

0 comments on commit 44e38ee

Please sign in to comment.