edea

A ps1 emulator in harelang
Log | Files | Refs

bios.ha (769B)


      1 use os;
      2 use io;
      3 use fmt;
      4 use util;
      5 
      6 export type BIOS = struct {
      7 	data: []u8,
      8 };
      9 
     10 export fn new() (io::error | BIOS) = {
     11 	const file = os::open("roms/scph1001.bin")!;
     12 	defer io::close(file)!;
     13 
     14 	let buffer = io::drain(file)!;
     15 
     16 	let b = BIOS {
     17 		data = buffer,
     18 	};
     19 
     20 	return b;
     21 };
     22 
     23 export fn load32(bios: BIOS, o: u32) u32 = {
     24 	let off = o;
     25 
     26 	//fmt::printfln("{:.02X}{:.02X} {:.02X}{:.02X}", bios.data[off], bios.data[off + 1], bios.data[2 + off], bios.data[3 +off])!;
     27 
     28 	let b0 = bios.data[off + 0]: u32;
     29 	let b1 = bios.data[off + 1]: u32;
     30 	let b2 = bios.data[off + 2]: u32;
     31 	let b3 = bios.data[off + 3]: u32;
     32 
     33 	let res = b0 | (b1 << 8) | (b2 << 16) | (b3 << 24);
     34 
     35 	return res;
     36 
     37 };
     38 
     39 export fn load8(bios: BIOS, o: u32) u8 = {
     40 	let off = o;
     41 	return bios.data[off: size];
     42 };