fix: improper lifetime for *Arm7tdmi ptr in Bus

*Arm7tdmi ptr is now assigned one scope up so that it lives as least
as long as Bus does
This commit is contained in:
Rekai Nyangadzayi Musuka 2022-10-21 05:12:37 -03:00
parent f074b703b3
commit c7f537959b
3 changed files with 7 additions and 3 deletions

View File

@ -60,6 +60,10 @@ pub fn deinit(self: Self) void {
self.ppu.deinit();
}
pub fn attach(self: *Self, cpu: *Arm7tdmi) void {
self.cpu = cpu;
}
pub fn handleDMATransfers(self: *Self) void {
while (self.isDmaRunning()) {
if (self.dma._1.step(self)) continue;

View File

@ -80,7 +80,7 @@ pub const Arm7tdmi = struct {
binary_log: bool,
pub fn init(alloc: Allocator, sched: *Scheduler, paths: FilePaths) !Self {
var cpu: Arm7tdmi = .{
return Self{
.r = [_]u32{0x00} ** 16,
.sched = sched,
.bus = try Bus.init(alloc, sched, paths),
@ -93,8 +93,6 @@ pub const Arm7tdmi = struct {
.log_buf = undefined,
.binary_log = false,
};
cpu.bus.cpu = &cpu;
return cpu;
}
pub fn deinit(self: Self) void {

View File

@ -80,6 +80,8 @@ pub fn main() anyerror!void {
const paths = .{ .bios = bios_path, .rom = rom_path, .save = save_path };
var cpu = try Arm7tdmi.init(alloc, &scheduler, paths);
defer cpu.deinit();
cpu.bus.attach(&cpu);
cpu.fastBoot();
// Initialize SDL Audio