dev/asset-management #6
@ -18,8 +18,10 @@ pub struct Codegen {
|
|||||||
pub symbols: Vec<Symbol>,
|
pub symbols: Vec<Symbol>,
|
||||||
instructions: Vec<(Asm, bool)>, // (Asm, has_symbol)
|
instructions: Vec<(Asm, bool)>, // (Asm, has_symbol)
|
||||||
locals: HashMap<String, u32>,
|
locals: HashMap<String, u32>,
|
||||||
|
globals: HashMap<String, u32>,
|
||||||
constant_pool: Vec<ConstantPoolEntry>,
|
constant_pool: Vec<ConstantPoolEntry>,
|
||||||
next_local: u32,
|
next_local: u32,
|
||||||
|
next_global: u32,
|
||||||
label_count: u32,
|
label_count: u32,
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -31,8 +33,10 @@ impl Codegen {
|
|||||||
symbols: Vec::new(),
|
symbols: Vec::new(),
|
||||||
instructions: Vec::new(),
|
instructions: Vec::new(),
|
||||||
locals: HashMap::new(),
|
locals: HashMap::new(),
|
||||||
|
globals: HashMap::new(),
|
||||||
constant_pool: vec![ConstantPoolEntry::Null], // Index 0 is always Null
|
constant_pool: vec![ConstantPoolEntry::Null], // Index 0 is always Null
|
||||||
next_local: 0,
|
next_local: 0,
|
||||||
|
next_global: 0,
|
||||||
label_count: 0,
|
label_count: 0,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -52,7 +56,7 @@ impl Codegen {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn compile_programs(&mut self, programs: Vec<(String, String, &Program)>) -> Result<Vec<u8>> {
|
pub fn compile_programs(&mut self, programs: Vec<(String, String, &Program)>) -> Result<Vec<u8>> {
|
||||||
// First pass: collect all functions and their indices
|
// First pass: collect all functions and global variables
|
||||||
let mut all_functions = Vec::new();
|
let mut all_functions = Vec::new();
|
||||||
for (file, source, program) in &programs {
|
for (file, source, program) in &programs {
|
||||||
for item in &program.body {
|
for item in &program.body {
|
||||||
@ -63,6 +67,29 @@ impl Codegen {
|
|||||||
Statement::ExportNamedDeclaration(decl) => {
|
Statement::ExportNamedDeclaration(decl) => {
|
||||||
if let Some(Declaration::FunctionDeclaration(f)) = &decl.declaration {
|
if let Some(Declaration::FunctionDeclaration(f)) = &decl.declaration {
|
||||||
all_functions.push((file.clone(), source.clone(), f.as_ref()));
|
all_functions.push((file.clone(), source.clone(), f.as_ref()));
|
||||||
|
} else if let Some(Declaration::VariableDeclaration(var)) = &decl.declaration {
|
||||||
|
for decl in &var.declarations {
|
||||||
|
if let BindingPattern::BindingIdentifier(ident) = &decl.id {
|
||||||
|
let name = ident.name.to_string();
|
||||||
|
if !self.globals.contains_key(&name) {
|
||||||
|
let id = self.next_global;
|
||||||
|
self.globals.insert(name, id);
|
||||||
|
self.next_global += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Statement::VariableDeclaration(var) => {
|
||||||
|
for decl in &var.declarations {
|
||||||
|
if let BindingPattern::BindingIdentifier(ident) = &decl.id {
|
||||||
|
let name = ident.name.to_string();
|
||||||
|
if !self.globals.contains_key(&name) {
|
||||||
|
let id = self.next_global;
|
||||||
|
self.globals.insert(name, id);
|
||||||
|
self.next_global += 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_ => {}
|
_ => {}
|
||||||
@ -99,6 +126,40 @@ impl Codegen {
|
|||||||
|
|
||||||
let frame_fn_name = frame_fn_name.ok_or_else(|| anyhow!("export function frame() not found in entry file"))?;
|
let frame_fn_name = frame_fn_name.ok_or_else(|| anyhow!("export function frame() not found in entry file"))?;
|
||||||
|
|
||||||
|
// Initialize globals
|
||||||
|
for (file, source, program) in &programs {
|
||||||
|
self.file_name = file.clone();
|
||||||
|
self.source_text = source.clone();
|
||||||
|
for item in &program.body {
|
||||||
|
let var_opt = match item {
|
||||||
|
Statement::VariableDeclaration(var) => Some(var.as_ref()),
|
||||||
|
Statement::ExportNamedDeclaration(decl) => {
|
||||||
|
if let Some(Declaration::VariableDeclaration(var)) = &decl.declaration {
|
||||||
|
Some(var.as_ref())
|
||||||
|
} else {
|
||||||
|
None
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_ => None,
|
||||||
|
};
|
||||||
|
|
||||||
|
if let Some(var) = var_opt {
|
||||||
|
for decl in &var.declarations {
|
||||||
|
if let BindingPattern::BindingIdentifier(ident) = &decl.id {
|
||||||
|
let name = ident.name.to_string();
|
||||||
|
let id = *self.globals.get(&name).unwrap();
|
||||||
|
if let Some(init) = &decl.init {
|
||||||
|
self.compile_expr(init)?;
|
||||||
|
} else {
|
||||||
|
self.emit_op(OpCode::PushI32, vec![Operand::I32(0)], decl.span);
|
||||||
|
}
|
||||||
|
self.emit_op(OpCode::SetGlobal, vec![Operand::U32(id)], decl.span);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Entry point: loop calling frame
|
// Entry point: loop calling frame
|
||||||
self.emit_label("entry".to_string());
|
self.emit_label("entry".to_string());
|
||||||
self.emit_op(OpCode::Call, vec![Operand::Label(frame_fn_name), Operand::U32(0)], Span::default());
|
self.emit_op(OpCode::Call, vec![Operand::Label(frame_fn_name), Operand::U32(0)], Span::default());
|
||||||
@ -221,7 +282,7 @@ impl Codegen {
|
|||||||
if val.fract() == 0.0 && val >= i32::MIN as f64 && val <= i32::MAX as f64 {
|
if val.fract() == 0.0 && val >= i32::MIN as f64 && val <= i32::MAX as f64 {
|
||||||
self.emit_op(OpCode::PushI32, vec![Operand::I32(val as i32)], n.span);
|
self.emit_op(OpCode::PushI32, vec![Operand::I32(val as i32)], n.span);
|
||||||
} else {
|
} else {
|
||||||
self.emit_op(OpCode::PushI64, vec![Operand::I64(val as i64)], n.span);
|
self.emit_op(OpCode::PushF64, vec![Operand::F64(val)], n.span);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Expression::BooleanLiteral(b) => {
|
Expression::BooleanLiteral(b) => {
|
||||||
@ -238,6 +299,8 @@ impl Codegen {
|
|||||||
let name = ident.name.to_string();
|
let name = ident.name.to_string();
|
||||||
if let Some(&id) = self.locals.get(&name) {
|
if let Some(&id) = self.locals.get(&name) {
|
||||||
self.emit_op(OpCode::GetLocal, vec![Operand::U32(id)], ident.span);
|
self.emit_op(OpCode::GetLocal, vec![Operand::U32(id)], ident.span);
|
||||||
|
} else if let Some(&id) = self.globals.get(&name) {
|
||||||
|
self.emit_op(OpCode::GetGlobal, vec![Operand::U32(id)], ident.span);
|
||||||
} else {
|
} else {
|
||||||
return Err(anyhow!("Undefined variable: {} at {:?}", name, ident.span));
|
return Err(anyhow!("Undefined variable: {} at {:?}", name, ident.span));
|
||||||
}
|
}
|
||||||
@ -249,6 +312,9 @@ impl Codegen {
|
|||||||
if let Some(&id) = self.locals.get(&name) {
|
if let Some(&id) = self.locals.get(&name) {
|
||||||
self.emit_op(OpCode::SetLocal, vec![Operand::U32(id)], assign.span);
|
self.emit_op(OpCode::SetLocal, vec![Operand::U32(id)], assign.span);
|
||||||
self.emit_op(OpCode::GetLocal, vec![Operand::U32(id)], assign.span);
|
self.emit_op(OpCode::GetLocal, vec![Operand::U32(id)], assign.span);
|
||||||
|
} else if let Some(&id) = self.globals.get(&name) {
|
||||||
|
self.emit_op(OpCode::SetGlobal, vec![Operand::U32(id)], assign.span);
|
||||||
|
self.emit_op(OpCode::GetGlobal, vec![Operand::U32(id)], assign.span);
|
||||||
} else {
|
} else {
|
||||||
return Err(anyhow!("Undefined variable: {} at {:?}", name, ident.span));
|
return Err(anyhow!("Undefined variable: {} at {:?}", name, ident.span));
|
||||||
}
|
}
|
||||||
|
|||||||
@ -80,6 +80,14 @@ pub enum DebugEvent {
|
|||||||
vm_steps: u32,
|
vm_steps: u32,
|
||||||
syscalls: u32,
|
syscalls: u32,
|
||||||
cycles: u64,
|
cycles: u64,
|
||||||
|
host_cpu_time_us: u64,
|
||||||
|
violations: u32,
|
||||||
|
gfx_used_bytes: usize,
|
||||||
|
gfx_inflight_bytes: usize,
|
||||||
|
gfx_slots_occupied: u32,
|
||||||
|
audio_used_bytes: usize,
|
||||||
|
audio_inflight_bytes: usize,
|
||||||
|
audio_slots_occupied: u32,
|
||||||
},
|
},
|
||||||
#[serde(rename = "cert")]
|
#[serde(rename = "cert")]
|
||||||
Cert {
|
Cert {
|
||||||
|
|||||||
@ -151,12 +151,50 @@ impl AssetManager {
|
|||||||
|
|
||||||
pub fn initialize_for_cartridge(&self, assets: Vec<AssetEntry>, assets_data: Vec<u8>) {
|
pub fn initialize_for_cartridge(&self, assets: Vec<AssetEntry>, assets_data: Vec<u8>) {
|
||||||
self.shutdown();
|
self.shutdown();
|
||||||
|
{
|
||||||
let mut asset_map = self.assets.write().unwrap();
|
let mut asset_map = self.assets.write().unwrap();
|
||||||
asset_map.clear();
|
asset_map.clear();
|
||||||
for entry in assets {
|
for entry in assets.iter() {
|
||||||
asset_map.insert(entry.asset_id.clone(), entry);
|
asset_map.insert(entry.asset_id.clone(), entry.clone());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
*self.assets_data.write().unwrap() = assets_data;
|
*self.assets_data.write().unwrap() = assets_data;
|
||||||
|
|
||||||
|
// Perform Preload for assets marked with preload_slot
|
||||||
|
for entry in assets {
|
||||||
|
if let Some(slot_index) = entry.preload_slot {
|
||||||
|
match entry.bank_type {
|
||||||
|
BankType::TILES => {
|
||||||
|
if let Ok(bank) = Self::perform_load_tile_bank(&entry, self.assets_data.clone()) {
|
||||||
|
let bank_arc = Arc::new(bank);
|
||||||
|
self.gfx_policy.put_resident(entry.asset_id.clone(), Arc::clone(&bank_arc), entry.decoded_size as usize);
|
||||||
|
self.gfx_installer.install_tile_bank(slot_index, bank_arc);
|
||||||
|
let mut slots = self.gfx_slots.write().unwrap();
|
||||||
|
if slot_index < slots.len() {
|
||||||
|
slots[slot_index] = Some(entry.asset_id.clone());
|
||||||
|
}
|
||||||
|
println!("[AssetManager] Preloaded tile asset '{}' into slot {}", entry.asset_id, slot_index);
|
||||||
|
} else {
|
||||||
|
eprintln!("[AssetManager] Failed to preload tile asset '{}'", entry.asset_id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
BankType::SOUNDS => {
|
||||||
|
if let Ok(bank) = Self::perform_load_sound_bank(&entry, self.assets_data.clone()) {
|
||||||
|
let bank_arc = Arc::new(bank);
|
||||||
|
self.sound_policy.put_resident(entry.asset_id.clone(), Arc::clone(&bank_arc), entry.decoded_size as usize);
|
||||||
|
self.sound_installer.install_sound_bank(slot_index, bank_arc);
|
||||||
|
let mut slots = self.sound_slots.write().unwrap();
|
||||||
|
if slot_index < slots.len() {
|
||||||
|
slots[slot_index] = Some(entry.asset_id.clone());
|
||||||
|
}
|
||||||
|
println!("[AssetManager] Preloaded sound asset '{}' into slot {}", entry.asset_id, slot_index);
|
||||||
|
} else {
|
||||||
|
eprintln!("[AssetManager] Failed to preload sound asset '{}'", entry.asset_id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn load(&self, asset_id: &str, slot: SlotRef) -> Result<HandleId, String> {
|
pub fn load(&self, asset_id: &str, slot: SlotRef) -> Result<HandleId, String> {
|
||||||
@ -460,12 +498,21 @@ impl AssetManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let mut slots_occupied = 0;
|
||||||
|
{
|
||||||
|
let slots = self.gfx_slots.read().unwrap();
|
||||||
|
for s in slots.iter() {
|
||||||
|
if s.is_some() { slots_occupied += 1; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
BankStats {
|
BankStats {
|
||||||
total_bytes: 16 * 1024 * 1024,
|
total_bytes: 16 * 1024 * 1024,
|
||||||
used_bytes,
|
used_bytes,
|
||||||
free_bytes: (16usize * 1024 * 1024).saturating_sub(used_bytes),
|
free_bytes: (16usize * 1024 * 1024).saturating_sub(used_bytes),
|
||||||
inflight_bytes,
|
inflight_bytes,
|
||||||
slot_count: 16,
|
slot_count: 16,
|
||||||
|
slots_occupied,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
BankType::SOUNDS => {
|
BankType::SOUNDS => {
|
||||||
@ -492,12 +539,21 @@ impl AssetManager {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
let mut slots_occupied = 0;
|
||||||
|
{
|
||||||
|
let slots = self.sound_slots.read().unwrap();
|
||||||
|
for s in slots.iter() {
|
||||||
|
if s.is_some() { slots_occupied += 1; }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
BankStats {
|
BankStats {
|
||||||
total_bytes: 32 * 1024 * 1024,
|
total_bytes: 32 * 1024 * 1024,
|
||||||
used_bytes,
|
used_bytes,
|
||||||
free_bytes: (32usize * 1024 * 1024).saturating_sub(used_bytes),
|
free_bytes: (32usize * 1024 * 1024).saturating_sub(used_bytes),
|
||||||
inflight_bytes,
|
inflight_bytes,
|
||||||
slot_count: 16,
|
slot_count: 16,
|
||||||
|
slots_occupied,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -582,6 +638,7 @@ mod tests {
|
|||||||
"width": 16,
|
"width": 16,
|
||||||
"height": 16
|
"height": 16
|
||||||
}),
|
}),
|
||||||
|
preload_slot: None,
|
||||||
};
|
};
|
||||||
|
|
||||||
let am = AssetManager::new(vec![asset_entry], data, gfx_installer, sound_installer);
|
let am = AssetManager::new(vec![asset_entry], data, gfx_installer, sound_installer);
|
||||||
@ -631,6 +688,7 @@ mod tests {
|
|||||||
"width": 16,
|
"width": 16,
|
||||||
"height": 16
|
"height": 16
|
||||||
}),
|
}),
|
||||||
|
preload_slot: None,
|
||||||
};
|
};
|
||||||
|
|
||||||
let am = AssetManager::new(vec![asset_entry], data, gfx_installer, sound_installer);
|
let am = AssetManager::new(vec![asset_entry], data, gfx_installer, sound_installer);
|
||||||
@ -669,6 +727,7 @@ mod tests {
|
|||||||
metadata: serde_json::json!({
|
metadata: serde_json::json!({
|
||||||
"sample_rate": 44100
|
"sample_rate": 44100
|
||||||
}),
|
}),
|
||||||
|
preload_slot: None,
|
||||||
};
|
};
|
||||||
|
|
||||||
let am = AssetManager::new(vec![asset_entry], data, gfx_installer, sound_installer);
|
let am = AssetManager::new(vec![asset_entry], data, gfx_installer, sound_installer);
|
||||||
@ -689,4 +748,37 @@ mod tests {
|
|||||||
assert_eq!(am.status(handle), LoadStatus::COMMITTED);
|
assert_eq!(am.status(handle), LoadStatus::COMMITTED);
|
||||||
assert!(banks.sound_bank_slot(0).is_some());
|
assert!(banks.sound_bank_slot(0).is_some());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_preload_on_init() {
|
||||||
|
let banks = Arc::new(MemoryBanks::new());
|
||||||
|
let gfx_installer = Arc::clone(&banks) as Arc<dyn TileBankPoolInstaller>;
|
||||||
|
let sound_installer = Arc::clone(&banks) as Arc<dyn SoundBankPoolInstaller>;
|
||||||
|
|
||||||
|
let data = vec![0u8; 200];
|
||||||
|
|
||||||
|
let asset_entry = AssetEntry {
|
||||||
|
asset_id: "preload_sound".to_string(),
|
||||||
|
bank_type: BankType::SOUNDS,
|
||||||
|
offset: 0,
|
||||||
|
size: data.len() as u64,
|
||||||
|
decoded_size: data.len() as u64,
|
||||||
|
codec: "RAW".to_string(),
|
||||||
|
metadata: serde_json::json!({
|
||||||
|
"sample_rate": 44100
|
||||||
|
}),
|
||||||
|
preload_slot: Some(5),
|
||||||
|
};
|
||||||
|
|
||||||
|
let am = AssetManager::new(vec![], vec![], gfx_installer, sound_installer);
|
||||||
|
|
||||||
|
// Before init, slot 5 is empty
|
||||||
|
assert!(banks.sound_bank_slot(5).is_none());
|
||||||
|
|
||||||
|
am.initialize_for_cartridge(vec![asset_entry], data);
|
||||||
|
|
||||||
|
// After init, slot 5 should be occupied because of preload
|
||||||
|
assert!(banks.sound_bank_slot(5).is_some());
|
||||||
|
assert_eq!(am.slot_info(SlotRef::audio(5)).asset_id, Some("preload_sound".to_string()));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -126,7 +126,10 @@ impl Audio {
|
|||||||
|
|
||||||
|
|
||||||
if let Some(s) = sample {
|
if let Some(s) = sample {
|
||||||
|
println!("[Audio] Resolved sample from bank {} sample {}. Playing on voice {}.", bank_id, sample_id, voice_id);
|
||||||
self.play_sample(s, voice_id, volume, pan, pitch, priority, loop_mode);
|
self.play_sample(s, voice_id, volume, pan, pitch, priority, loop_mode);
|
||||||
|
} else {
|
||||||
|
eprintln!("[Audio] Failed to resolve sample from bank {} sample {}.", bank_id, sample_id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -134,6 +137,19 @@ impl Audio {
|
|||||||
if voice_id >= MAX_CHANNELS {
|
if voice_id >= MAX_CHANNELS {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Update local state
|
||||||
|
self.voices[voice_id] = Channel {
|
||||||
|
sample: Some(Arc::clone(&sample)),
|
||||||
|
active: true,
|
||||||
|
pos: 0.0,
|
||||||
|
pitch,
|
||||||
|
volume,
|
||||||
|
pan,
|
||||||
|
loop_mode,
|
||||||
|
priority,
|
||||||
|
};
|
||||||
|
|
||||||
// Push command to the host
|
// Push command to the host
|
||||||
self.commands.push(AudioCommand::Play {
|
self.commands.push(AudioCommand::Play {
|
||||||
sample,
|
sample,
|
||||||
|
|||||||
@ -20,6 +20,8 @@ pub struct AssetEntry {
|
|||||||
pub decoded_size: u64,
|
pub decoded_size: u64,
|
||||||
pub codec: String, // e.g., "RAW"
|
pub codec: String, // e.g., "RAW"
|
||||||
pub metadata: serde_json::Value,
|
pub metadata: serde_json::Value,
|
||||||
|
#[serde(default)]
|
||||||
|
pub preload_slot: Option<usize>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
|
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
|
||||||
@ -39,6 +41,7 @@ pub struct BankStats {
|
|||||||
pub free_bytes: usize,
|
pub free_bytes: usize,
|
||||||
pub inflight_bytes: usize,
|
pub inflight_bytes: usize,
|
||||||
pub slot_count: usize,
|
pub slot_count: usize,
|
||||||
|
pub slots_occupied: usize,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone, Serialize, Deserialize)]
|
#[derive(Debug, Clone, Serialize, Deserialize)]
|
||||||
|
|||||||
@ -1,7 +1,7 @@
|
|||||||
use crate::fs::{FsBackend, FsState, VirtualFS};
|
use crate::fs::{FsBackend, FsState, VirtualFS};
|
||||||
use crate::hardware::{HardwareBridge, InputSignals};
|
use crate::hardware::{HardwareBridge, InputSignals};
|
||||||
use crate::log::{LogLevel, LogService, LogSource};
|
use crate::log::{LogLevel, LogService, LogSource};
|
||||||
use crate::model::{Cartridge, Color};
|
use crate::model::{BankType, Cartridge, Color};
|
||||||
use crate::prometeu_os::{NativeInterface, Syscall};
|
use crate::prometeu_os::{NativeInterface, Syscall};
|
||||||
use crate::telemetry::{CertificationConfig, Certifier, TelemetryFrame};
|
use crate::telemetry::{CertificationConfig, Certifier, TelemetryFrame};
|
||||||
use crate::virtual_machine::{Value, VirtualMachine};
|
use crate::virtual_machine::{Value, VirtualMachine};
|
||||||
@ -263,9 +263,26 @@ impl PrometeuOS {
|
|||||||
|
|
||||||
self.last_frame_cpu_time_us = start.elapsed().as_micros() as u64;
|
self.last_frame_cpu_time_us = start.elapsed().as_micros() as u64;
|
||||||
|
|
||||||
|
// Update bank telemetry in current frame (snapshot)
|
||||||
|
let gfx_stats = hw.assets().bank_info(BankType::TILES);
|
||||||
|
self.telemetry_current.gfx_used_bytes = gfx_stats.used_bytes;
|
||||||
|
self.telemetry_current.gfx_inflight_bytes = gfx_stats.inflight_bytes;
|
||||||
|
self.telemetry_current.gfx_slots_occupied = gfx_stats.slots_occupied as u32;
|
||||||
|
|
||||||
|
let audio_stats = hw.assets().bank_info(BankType::SOUNDS);
|
||||||
|
self.telemetry_current.audio_used_bytes = audio_stats.used_bytes;
|
||||||
|
self.telemetry_current.audio_inflight_bytes = audio_stats.inflight_bytes;
|
||||||
|
self.telemetry_current.audio_slots_occupied = audio_stats.slots_occupied as u32;
|
||||||
|
|
||||||
// If the frame ended exactly in this tick, we update the final real time in the latch.
|
// If the frame ended exactly in this tick, we update the final real time in the latch.
|
||||||
if !self.logical_frame_active && self.telemetry_last.frame_index == self.logical_frame_index.wrapping_sub(1) {
|
if !self.logical_frame_active && self.telemetry_last.frame_index == self.logical_frame_index.wrapping_sub(1) {
|
||||||
self.telemetry_last.host_cpu_time_us = self.last_frame_cpu_time_us;
|
self.telemetry_last.host_cpu_time_us = self.last_frame_cpu_time_us;
|
||||||
|
self.telemetry_last.gfx_used_bytes = self.telemetry_current.gfx_used_bytes;
|
||||||
|
self.telemetry_last.gfx_inflight_bytes = self.telemetry_current.gfx_inflight_bytes;
|
||||||
|
self.telemetry_last.gfx_slots_occupied = self.telemetry_current.gfx_slots_occupied;
|
||||||
|
self.telemetry_last.audio_used_bytes = self.telemetry_current.audio_used_bytes;
|
||||||
|
self.telemetry_last.audio_inflight_bytes = self.telemetry_current.audio_inflight_bytes;
|
||||||
|
self.telemetry_last.audio_slots_occupied = self.telemetry_current.audio_slots_occupied;
|
||||||
}
|
}
|
||||||
|
|
||||||
None
|
None
|
||||||
@ -695,21 +712,29 @@ impl NativeInterface for PrometeuOS {
|
|||||||
let voice_id = vm.pop_integer()? as usize;
|
let voice_id = vm.pop_integer()? as usize;
|
||||||
let sample_id = vm.pop_integer()? as u32;
|
let sample_id = vm.pop_integer()? as u32;
|
||||||
|
|
||||||
// let sample = match sample_id {
|
|
||||||
// 0 => self.sample_square.clone(),
|
|
||||||
// 1 => self.sample_kick.clone(),
|
|
||||||
// 2 => self.sample_snare.clone(),
|
|
||||||
// _ => None,
|
|
||||||
// };
|
|
||||||
|
|
||||||
// if let Some(s) = sample {
|
|
||||||
// hw.audio_mut().play(s, voice_id, volume, pan, pitch, 0, crate::hardware::LoopMode::Off);
|
|
||||||
// }
|
|
||||||
hw.audio_mut().play(0, sample_id as u16, voice_id, volume, pan, pitch, 0, crate::hardware::LoopMode::Off);
|
hw.audio_mut().play(0, sample_id as u16, voice_id, volume, pan, pitch, 0, crate::hardware::LoopMode::Off);
|
||||||
vm.push(Value::Null);
|
vm.push(Value::Null);
|
||||||
Ok(300)
|
Ok(300)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// audio.play(bank_id, sample_id, voice_id, volume, pan, pitch, loop_mode)
|
||||||
|
Syscall::AudioPlay => {
|
||||||
|
let loop_mode = match vm.pop_integer()? {
|
||||||
|
0 => crate::hardware::LoopMode::Off,
|
||||||
|
_ => crate::hardware::LoopMode::On,
|
||||||
|
};
|
||||||
|
let pitch = vm.pop_number()?;
|
||||||
|
let pan = vm.pop_integer()? as u8;
|
||||||
|
let volume = vm.pop_integer()? as u8;
|
||||||
|
let voice_id = vm.pop_integer()? as usize;
|
||||||
|
let sample_id = vm.pop_integer()? as u16;
|
||||||
|
let bank_id = vm.pop_integer()? as u8;
|
||||||
|
|
||||||
|
hw.audio_mut().play(bank_id, sample_id, voice_id, volume, pan, pitch, 0, loop_mode);
|
||||||
|
vm.push(Value::Null);
|
||||||
|
Ok(300)
|
||||||
|
}
|
||||||
|
|
||||||
// --- Filesystem Syscalls (0x4000) ---
|
// --- Filesystem Syscalls (0x4000) ---
|
||||||
|
|
||||||
// FS_OPEN(path) -> handle
|
// FS_OPEN(path) -> handle
|
||||||
|
|||||||
@ -28,6 +28,7 @@ pub enum Syscall {
|
|||||||
|
|
||||||
// Audio
|
// Audio
|
||||||
AudioPlaySample = 0x3001,
|
AudioPlaySample = 0x3001,
|
||||||
|
AudioPlay = 0x3002,
|
||||||
|
|
||||||
// FS
|
// FS
|
||||||
FsOpen = 0x4001,
|
FsOpen = 0x4001,
|
||||||
@ -75,6 +76,7 @@ impl Syscall {
|
|||||||
0x2105 => Some(Self::TouchIsReleased),
|
0x2105 => Some(Self::TouchIsReleased),
|
||||||
0x2106 => Some(Self::TouchGetHold),
|
0x2106 => Some(Self::TouchGetHold),
|
||||||
0x3001 => Some(Self::AudioPlaySample),
|
0x3001 => Some(Self::AudioPlaySample),
|
||||||
|
0x3002 => Some(Self::AudioPlay),
|
||||||
0x4001 => Some(Self::FsOpen),
|
0x4001 => Some(Self::FsOpen),
|
||||||
0x4002 => Some(Self::FsRead),
|
0x4002 => Some(Self::FsRead),
|
||||||
0x4003 => Some(Self::FsWrite),
|
0x4003 => Some(Self::FsWrite),
|
||||||
@ -147,6 +149,7 @@ impl Syscall {
|
|||||||
"touch.isReleased" | "touch.is_released" => Some(Self::TouchIsReleased),
|
"touch.isReleased" | "touch.is_released" => Some(Self::TouchIsReleased),
|
||||||
"touch.getHold" | "touch.get_hold" => Some(Self::TouchGetHold),
|
"touch.getHold" | "touch.get_hold" => Some(Self::TouchGetHold),
|
||||||
"audio.playSample" | "audio.play_sample" => Some(Self::AudioPlaySample),
|
"audio.playSample" | "audio.play_sample" => Some(Self::AudioPlaySample),
|
||||||
|
"audio.play" => Some(Self::AudioPlay),
|
||||||
"fs.open" => Some(Self::FsOpen),
|
"fs.open" => Some(Self::FsOpen),
|
||||||
"fs.read" => Some(Self::FsRead),
|
"fs.read" => Some(Self::FsRead),
|
||||||
"fs.write" => Some(Self::FsWrite),
|
"fs.write" => Some(Self::FsWrite),
|
||||||
|
|||||||
@ -8,6 +8,16 @@ pub struct TelemetryFrame {
|
|||||||
pub syscalls: u32,
|
pub syscalls: u32,
|
||||||
pub host_cpu_time_us: u64,
|
pub host_cpu_time_us: u64,
|
||||||
pub violations: u32,
|
pub violations: u32,
|
||||||
|
|
||||||
|
// GFX Banks
|
||||||
|
pub gfx_used_bytes: usize,
|
||||||
|
pub gfx_inflight_bytes: usize,
|
||||||
|
pub gfx_slots_occupied: u32,
|
||||||
|
|
||||||
|
// Audio Banks
|
||||||
|
pub audio_used_bytes: usize,
|
||||||
|
pub audio_inflight_bytes: usize,
|
||||||
|
pub audio_slots_occupied: u32,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clone, Copy, Default)]
|
#[derive(Debug, Clone, Copy, Default)]
|
||||||
|
|||||||
@ -69,7 +69,9 @@ impl HostAudio {
|
|||||||
pub fn send_commands(&mut self, commands: &mut Vec<AudioCommand>) {
|
pub fn send_commands(&mut self, commands: &mut Vec<AudioCommand>) {
|
||||||
if let Some(producer) = &mut self.producer {
|
if let Some(producer) = &mut self.producer {
|
||||||
for cmd in commands.drain(..) {
|
for cmd in commands.drain(..) {
|
||||||
let _ = producer.try_push(cmd);
|
if let Err(_) = producer.try_push(cmd) {
|
||||||
|
eprintln!("[HostAudio] Command ringbuffer full, dropping command.");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -108,6 +110,7 @@ impl AudioMixer {
|
|||||||
loop_mode,
|
loop_mode,
|
||||||
} => {
|
} => {
|
||||||
if voice_id < MAX_CHANNELS {
|
if voice_id < MAX_CHANNELS {
|
||||||
|
println!("[AudioMixer] Playing voice {}: vol={}, pitch={}, loop={:?}", voice_id, volume, pitch, loop_mode);
|
||||||
self.voices[voice_id] = Channel {
|
self.voices[voice_id] = Channel {
|
||||||
sample: Some(sample),
|
sample: Some(sample),
|
||||||
active: true,
|
active: true,
|
||||||
|
|||||||
@ -230,17 +230,32 @@ impl HostDebugger {
|
|||||||
|
|
||||||
// Map Certification tags (0xCA01-0xCA03) to 'Cert' protocol events.
|
// Map Certification tags (0xCA01-0xCA03) to 'Cert' protocol events.
|
||||||
if event.tag >= 0xCA01 && event.tag <= 0xCA03 {
|
if event.tag >= 0xCA01 && event.tag <= 0xCA03 {
|
||||||
let rule = match event.tag {
|
let tel = &firmware.os.telemetry_last;
|
||||||
0xCA01 => "cycles_budget",
|
let cert_config = &firmware.os.certifier.config;
|
||||||
0xCA02 => "max_syscalls",
|
|
||||||
0xCA03 => "max_host_cpu_us",
|
let (rule, used, limit) = match event.tag {
|
||||||
_ => "unknown"
|
0xCA01 => (
|
||||||
}.to_string();
|
"cycles_budget".to_string(),
|
||||||
|
tel.cycles_used,
|
||||||
|
cert_config.cycles_budget_per_frame.unwrap_or(0),
|
||||||
|
),
|
||||||
|
0xCA02 => (
|
||||||
|
"max_syscalls".to_string(),
|
||||||
|
tel.syscalls as u64,
|
||||||
|
cert_config.max_syscalls_per_frame.unwrap_or(0) as u64,
|
||||||
|
),
|
||||||
|
0xCA03 => (
|
||||||
|
"max_host_cpu_us".to_string(),
|
||||||
|
tel.host_cpu_time_us,
|
||||||
|
cert_config.max_host_cpu_us_per_frame.unwrap_or(0),
|
||||||
|
),
|
||||||
|
_ => ("unknown".to_string(), 0, 0),
|
||||||
|
};
|
||||||
|
|
||||||
self.send_event(DebugEvent::Cert {
|
self.send_event(DebugEvent::Cert {
|
||||||
rule,
|
rule,
|
||||||
used: 0,
|
used,
|
||||||
limit: 0,
|
limit,
|
||||||
frame_index: firmware.os.logical_frame_index,
|
frame_index: firmware.os.logical_frame_index,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -261,6 +276,14 @@ impl HostDebugger {
|
|||||||
vm_steps: tel.vm_steps,
|
vm_steps: tel.vm_steps,
|
||||||
syscalls: tel.syscalls,
|
syscalls: tel.syscalls,
|
||||||
cycles: tel.cycles_used,
|
cycles: tel.cycles_used,
|
||||||
|
host_cpu_time_us: tel.host_cpu_time_us,
|
||||||
|
violations: tel.violations,
|
||||||
|
gfx_used_bytes: tel.gfx_used_bytes,
|
||||||
|
gfx_inflight_bytes: tel.gfx_inflight_bytes,
|
||||||
|
gfx_slots_occupied: tel.gfx_slots_occupied,
|
||||||
|
audio_used_bytes: tel.audio_used_bytes,
|
||||||
|
audio_inflight_bytes: tel.audio_inflight_bytes,
|
||||||
|
audio_slots_occupied: tel.audio_slots_occupied,
|
||||||
});
|
});
|
||||||
self.last_telemetry_frame = current_frame;
|
self.last_telemetry_frame = current_frame;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -124,21 +124,31 @@ impl HostRunner {
|
|||||||
let color_bg = prometeu_core::model::Color::INDIGO; // Dark blue to stand out
|
let color_bg = prometeu_core::model::Color::INDIGO; // Dark blue to stand out
|
||||||
let color_warn = prometeu_core::model::Color::RED;
|
let color_warn = prometeu_core::model::Color::RED;
|
||||||
|
|
||||||
self.hardware.gfx.fill_rect(5, 5, 140, 65, color_bg);
|
self.hardware.gfx.fill_rect(5, 5, 140, 100, color_bg);
|
||||||
self.hardware.gfx.draw_text(10, 10, &format!("FPS: {:.1}", self.stats.current_fps), color_text);
|
self.hardware.gfx.draw_text(10, 10, &format!("FPS: {:.1}", self.stats.current_fps), color_text);
|
||||||
self.hardware.gfx.draw_text(10, 18, &format!("HOST: {:.2}MS", tel.host_cpu_time_us as f64 / 1000.0), color_text);
|
self.hardware.gfx.draw_text(10, 18, &format!("HOST: {:.2}MS", tel.host_cpu_time_us as f64 / 1000.0), color_text);
|
||||||
self.hardware.gfx.draw_text(10, 26, &format!("STEPS: {}", tel.vm_steps), color_text);
|
self.hardware.gfx.draw_text(10, 26, &format!("STEPS: {}", tel.vm_steps), color_text);
|
||||||
self.hardware.gfx.draw_text(10, 34, &format!("SYSC: {}", tel.syscalls), color_text);
|
self.hardware.gfx.draw_text(10, 34, &format!("SYSC: {}", tel.syscalls), color_text);
|
||||||
self.hardware.gfx.draw_text(10, 42, &format!("CYC: {}", tel.cycles_used), color_text);
|
self.hardware.gfx.draw_text(10, 42, &format!("CYC: {}", tel.cycles_used), color_text);
|
||||||
|
|
||||||
|
self.hardware.gfx.draw_text(10, 50, &format!("GFX: {}K/16M ({}S)", tel.gfx_used_bytes / 1024, tel.gfx_slots_occupied), color_text);
|
||||||
|
if tel.gfx_inflight_bytes > 0 {
|
||||||
|
self.hardware.gfx.draw_text(10, 58, &format!("LOAD GFX: {}KB", tel.gfx_inflight_bytes / 1024), color_warn);
|
||||||
|
}
|
||||||
|
|
||||||
|
self.hardware.gfx.draw_text(10, 66, &format!("AUD: {}K/32M ({}S)", tel.audio_used_bytes / 1024, tel.audio_slots_occupied), color_text);
|
||||||
|
if tel.audio_inflight_bytes > 0 {
|
||||||
|
self.hardware.gfx.draw_text(10, 74, &format!("LOAD AUD: {}KB", tel.audio_inflight_bytes / 1024), color_warn);
|
||||||
|
}
|
||||||
|
|
||||||
let cert_color = if tel.violations > 0 { color_warn } else { color_text };
|
let cert_color = if tel.violations > 0 { color_warn } else { color_text };
|
||||||
self.hardware.gfx.draw_text(10, 50, &format!("CERT LAST: {}", tel.violations), cert_color);
|
self.hardware.gfx.draw_text(10, 82, &format!("CERT LAST: {}", tel.violations), cert_color);
|
||||||
|
|
||||||
if tel.violations > 0 {
|
if tel.violations > 0 {
|
||||||
if let Some(event) = self.firmware.os.log_service.get_recent(10).into_iter().rev().find(|e| e.tag >= 0xCA01 && e.tag <= 0xCA03) {
|
if let Some(event) = self.firmware.os.log_service.get_recent(10).into_iter().rev().find(|e| e.tag >= 0xCA01 && e.tag <= 0xCA03) {
|
||||||
let mut msg = event.msg.clone();
|
let mut msg = event.msg.clone();
|
||||||
if msg.len() > 30 { msg.truncate(30); }
|
if msg.len() > 30 { msg.truncate(30); }
|
||||||
self.hardware.gfx.draw_text(10, 58, &msg, color_warn);
|
self.hardware.gfx.draw_text(10, 90, &msg, color_warn);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -51,7 +51,11 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"event": "telemetry",
|
"event": "telemetry",
|
||||||
"fields": ["frame_index", "vm_steps", "syscalls", "cycles"]
|
"fields": [
|
||||||
|
"frame_index", "vm_steps", "syscalls", "cycles", "host_cpu_time_us", "violations",
|
||||||
|
"gfx_used_bytes", "gfx_inflight_bytes", "gfx_slots_occupied",
|
||||||
|
"audio_used_bytes", "audio_inflight_bytes", "audio_slots_occupied"
|
||||||
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"event": "cert",
|
"event": "cert",
|
||||||
|
|||||||
1
devtools/typescript-sdk/types/index.d.ts
vendored
1
devtools/typescript-sdk/types/index.d.ts
vendored
@ -64,6 +64,7 @@ declare global {
|
|||||||
|
|
||||||
interface Audio {
|
interface Audio {
|
||||||
playSample(sampleId: number, voiceId: number, volume: number, pan: number, pitch: number): void;
|
playSample(sampleId: number, voiceId: number, volume: number, pan: number, pitch: number): void;
|
||||||
|
play(bankId: number, sampleId: number, voiceId: number, volume: number, pan: number, pitch: number, loopMode: number): void;
|
||||||
}
|
}
|
||||||
|
|
||||||
interface Fs {
|
interface Fs {
|
||||||
|
|||||||
@ -1,158 +1,179 @@
|
|||||||
00000000 Call U32(20) U32(0)
|
00000000 PushBool Bool(false) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/main.ts:5
|
||||||
0000000A Pop
|
00000003 SetGlobal U32(0) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/main.ts:5
|
||||||
0000000C FrameSync
|
00000009 Call U32(29) U32(0)
|
||||||
0000000E Jmp U32(0)
|
00000013 Pop
|
||||||
00000014 PushScope ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/main.ts:5
|
00000015 FrameSync
|
||||||
00000016 Call U32(236) U32(0) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/main.ts:6
|
00000017 Jmp U32(9)
|
||||||
00000020 Pop ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/main.ts:6
|
0000001D PushScope ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/main.ts:7
|
||||||
00000022 Call U32(564) U32(0) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/main.ts:7
|
0000001F GetGlobal U32(0) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/main.ts:8
|
||||||
0000002C Pop ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/main.ts:7
|
00000025 Not ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/main.ts:8
|
||||||
0000002E Call U32(690) U32(0) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/main.ts:8
|
00000027 JmpIfFalse U32(122) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/main.ts:8
|
||||||
00000038 Pop ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/main.ts:8
|
0000002D PushScope ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/main.ts:8
|
||||||
0000003A Call U32(92) U32(0) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/main.ts:9
|
0000002F PushI32 U32(0) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/main.ts:10
|
||||||
00000044 Pop ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/main.ts:9
|
00000035 PushI32 U32(0) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/main.ts:10
|
||||||
00000046 Call U32(452) U32(0) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/main.ts:10
|
0000003B PushI32 U32(0) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/main.ts:10
|
||||||
00000050 Pop ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/main.ts:10
|
00000041 PushI32 U32(128) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/main.ts:10
|
||||||
00000052 PopScope
|
00000047 PushI32 U32(127) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/main.ts:10
|
||||||
00000054 PushConst U32(0)
|
0000004D PushI32 U32(1) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/main.ts:10
|
||||||
0000005A Ret
|
00000053 PushI32 U32(1) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/main.ts:10
|
||||||
0000005C PushScope ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_fs.ts:1
|
00000059 Syscall U32(12290) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/main.ts:10
|
||||||
0000005E PushConst U32(1) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_fs.ts:2
|
0000005F Pop ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/main.ts:10
|
||||||
00000064 Syscall U32(16385) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_fs.ts:2
|
00000061 PushBool Bool(true) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/main.ts:11
|
||||||
0000006A GetLocal U32(0) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_fs.ts:3
|
00000064 SetGlobal U32(0) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/main.ts:11
|
||||||
00000070 PushI32 U32(0) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_fs.ts:3
|
0000006A GetGlobal U32(0) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/main.ts:11
|
||||||
00000076 Gte ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_fs.ts:3
|
00000070 Pop ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/main.ts:11
|
||||||
00000078 JmpIfFalse U32(226) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_fs.ts:3
|
00000072 PopScope ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/main.ts:8
|
||||||
0000007E PushScope ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_fs.ts:3
|
00000074 Jmp U32(122)
|
||||||
00000080 GetLocal U32(0) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_fs.ts:4
|
0000007A Call U32(336) U32(0) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/main.ts:14
|
||||||
00000086 PushConst U32(2) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_fs.ts:4
|
00000084 Pop ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/main.ts:14
|
||||||
0000008C Syscall U32(16387) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_fs.ts:4
|
00000086 Call U32(664) U32(0) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/main.ts:15
|
||||||
00000092 Pop ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_fs.ts:4
|
00000090 Pop ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/main.ts:15
|
||||||
00000094 GetLocal U32(0) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_fs.ts:5
|
00000092 Call U32(790) U32(0) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/main.ts:16
|
||||||
0000009A Syscall U32(16386) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_fs.ts:5
|
0000009C Pop ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/main.ts:16
|
||||||
000000A0 GetLocal U32(1) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_fs.ts:6
|
0000009E Call U32(192) U32(0) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/main.ts:17
|
||||||
000000A6 JmpIfFalse U32(204) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_fs.ts:6
|
000000A8 Pop ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/main.ts:17
|
||||||
000000AC PushI32 U32(2) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_fs.ts:6
|
000000AA Call U32(552) U32(0) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/main.ts:18
|
||||||
000000B2 PushI32 U32(101) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_fs.ts:6
|
000000B4 Pop ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/main.ts:18
|
||||||
000000B8 GetLocal U32(1) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_fs.ts:6
|
000000B6 PopScope
|
||||||
000000BE Syscall U32(20482) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_fs.ts:6
|
000000B8 PushConst U32(0)
|
||||||
000000C4 Pop ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_fs.ts:6
|
000000BE Ret
|
||||||
000000C6 Jmp U32(204)
|
000000C0 PushScope ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_fs.ts:1
|
||||||
000000CC GetLocal U32(0) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_fs.ts:7
|
000000C2 PushConst U32(1) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_fs.ts:2
|
||||||
000000D2 Syscall U32(16388) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_fs.ts:7
|
000000C8 Syscall U32(16385) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_fs.ts:2
|
||||||
000000D8 Pop ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_fs.ts:7
|
000000CE GetLocal U32(0) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_fs.ts:3
|
||||||
000000DA PopScope ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_fs.ts:3
|
000000D4 PushI32 U32(0) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_fs.ts:3
|
||||||
000000DC Jmp U32(226)
|
000000DA Gte ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_fs.ts:3
|
||||||
000000E2 PopScope
|
000000DC JmpIfFalse U32(326) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_fs.ts:3
|
||||||
000000E4 PushConst U32(0)
|
000000E2 PushScope ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_fs.ts:3
|
||||||
000000EA Ret
|
000000E4 GetLocal U32(0) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_fs.ts:4
|
||||||
000000EC PushScope ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:1
|
000000EA PushConst U32(2) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_fs.ts:4
|
||||||
000000EE PushI32 U32(18448) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:2
|
000000F0 Syscall U32(16387) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_fs.ts:4
|
||||||
000000F4 Syscall U32(4097) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:2
|
000000F6 Pop ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_fs.ts:4
|
||||||
000000FA Pop ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:2
|
000000F8 GetLocal U32(0) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_fs.ts:5
|
||||||
000000FC PushI32 U32(10) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:3
|
000000FE Syscall U32(16386) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_fs.ts:5
|
||||||
00000102 PushI32 U32(10) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:3
|
00000104 GetLocal U32(1) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_fs.ts:6
|
||||||
00000108 PushI32 U32(50) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:3
|
0000010A JmpIfFalse U32(304) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_fs.ts:6
|
||||||
0000010E PushI32 U32(50) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:3
|
00000110 PushI32 U32(2) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_fs.ts:6
|
||||||
00000114 PushI32 U32(63488) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:3
|
00000116 PushI32 U32(101) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_fs.ts:6
|
||||||
0000011A Syscall U32(4098) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:3
|
0000011C GetLocal U32(1) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_fs.ts:6
|
||||||
00000120 Pop ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:3
|
00000122 Syscall U32(20482) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_fs.ts:6
|
||||||
00000122 PushI32 U32(0) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:4
|
00000128 Pop ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_fs.ts:6
|
||||||
00000128 PushI32 U32(0) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:4
|
0000012A Jmp U32(304)
|
||||||
0000012E PushI32 U32(128) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:4
|
00000130 GetLocal U32(0) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_fs.ts:7
|
||||||
00000134 PushI32 U32(128) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:4
|
00000136 Syscall U32(16388) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_fs.ts:7
|
||||||
0000013A PushI32 U32(65535) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:4
|
0000013C Pop ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_fs.ts:7
|
||||||
00000140 Syscall U32(4099) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:4
|
0000013E PopScope ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_fs.ts:3
|
||||||
00000146 Pop ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:4
|
00000140 Jmp U32(326)
|
||||||
00000148 PushI32 U32(64) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:5
|
00000146 PopScope
|
||||||
0000014E PushI32 U32(64) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:5
|
00000148 PushConst U32(0)
|
||||||
00000154 PushI32 U32(20) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:5
|
0000014E Ret
|
||||||
0000015A PushI32 U32(31) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:5
|
00000150 PushScope ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:1
|
||||||
00000160 Syscall U32(4100) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:5
|
00000152 PushI32 U32(18448) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:2
|
||||||
00000166 Pop ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:5
|
00000158 Syscall U32(4097) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:2
|
||||||
00000168 PushI32 U32(100) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:6
|
0000015E Pop ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:2
|
||||||
0000016E PushI32 U32(100) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:6
|
00000160 PushI32 U32(10) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:3
|
||||||
00000174 PushI32 U32(10) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:6
|
00000166 PushI32 U32(10) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:3
|
||||||
0000017A PushI32 U32(2016) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:6
|
0000016C PushI32 U32(50) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:3
|
||||||
00000180 PushI32 U32(65504) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:6
|
00000172 PushI32 U32(50) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:3
|
||||||
00000186 Syscall U32(4101) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:6
|
00000178 PushI32 U32(63488) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:3
|
||||||
0000018C Pop ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:6
|
0000017E Syscall U32(4098) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:3
|
||||||
0000018E PushI32 U32(20) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:7
|
00000184 Pop ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:3
|
||||||
00000194 PushI32 U32(100) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:7
|
00000186 PushI32 U32(0) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:4
|
||||||
0000019A PushI32 U32(30) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:7
|
0000018C PushI32 U32(0) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:4
|
||||||
000001A0 PushI32 U32(30) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:7
|
00000192 PushI32 U32(128) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:4
|
||||||
000001A6 PushI32 U32(2047) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:7
|
00000198 PushI32 U32(128) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:4
|
||||||
000001AC PushI32 U32(63519) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:7
|
0000019E PushI32 U32(65535) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:4
|
||||||
000001B2 Syscall U32(4102) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:7
|
000001A4 Syscall U32(4099) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:4
|
||||||
000001B8 Pop ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:7
|
000001AA Pop ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:4
|
||||||
000001BA PopScope
|
000001AC PushI32 U32(64) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:5
|
||||||
000001BC PushConst U32(0)
|
000001B2 PushI32 U32(64) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:5
|
||||||
000001C2 Ret
|
000001B8 PushI32 U32(20) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:5
|
||||||
000001C4 PushScope ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:10
|
000001BE PushI32 U32(31) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:5
|
||||||
000001C6 PushI32 U32(255) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:11
|
000001C4 Syscall U32(4100) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:5
|
||||||
000001CC PushI32 U32(3) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:11
|
000001CA Pop ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:5
|
||||||
000001D2 Shr ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:11
|
000001CC PushI32 U32(100) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:6
|
||||||
000001D4 PushI32 U32(11) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:11
|
000001D2 PushI32 U32(100) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:6
|
||||||
000001DA Shl ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:11
|
000001D8 PushI32 U32(10) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:6
|
||||||
000001DC PushI32 U32(128) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:11
|
000001DE PushI32 U32(2016) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:6
|
||||||
000001E2 PushI32 U32(2) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:11
|
000001E4 PushI32 U32(65504) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:6
|
||||||
000001E8 Shr ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:11
|
000001EA Syscall U32(4101) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:6
|
||||||
000001EA PushI32 U32(5) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:11
|
000001F0 Pop ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:6
|
||||||
000001F0 Shl ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:11
|
000001F2 PushI32 U32(20) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:7
|
||||||
000001F2 BitOr ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:11
|
000001F8 PushI32 U32(100) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:7
|
||||||
000001F4 PushI32 U32(0) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:11
|
000001FE PushI32 U32(30) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:7
|
||||||
000001FA PushI32 U32(3) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:11
|
00000204 PushI32 U32(30) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:7
|
||||||
00000200 Shr ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:11
|
0000020A PushI32 U32(2047) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:7
|
||||||
00000202 BitOr ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:11
|
00000210 PushI32 U32(63519) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:7
|
||||||
00000204 PushI32 U32(0) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:12
|
00000216 Syscall U32(4102) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:7
|
||||||
0000020A PushI32 U32(0) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:12
|
0000021C Pop ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:7
|
||||||
00000210 PushI32 U32(5) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:12
|
0000021E PopScope
|
||||||
00000216 PushI32 U32(5) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:12
|
00000220 PushConst U32(0)
|
||||||
0000021C GetLocal U32(0) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:12
|
00000226 Ret
|
||||||
00000222 Syscall U32(4098) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:12
|
00000228 PushScope ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:10
|
||||||
00000228 Pop ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:12
|
0000022A PushI32 U32(255) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:11
|
||||||
0000022A PopScope
|
00000230 PushI32 U32(3) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:11
|
||||||
0000022C PushConst U32(0)
|
00000236 Shr ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:11
|
||||||
00000232 Ret
|
00000238 PushI32 U32(11) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:11
|
||||||
00000234 PushScope ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:1
|
0000023E Shl ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:11
|
||||||
00000236 PushI32 U32(0) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:2
|
00000240 PushI32 U32(128) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:11
|
||||||
0000023C Syscall U32(8193) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:2
|
00000246 PushI32 U32(2) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:11
|
||||||
00000242 JmpIfFalse U32(614) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:2
|
0000024C Shr ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:11
|
||||||
00000248 PushScope ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:2
|
0000024E PushI32 U32(5) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:11
|
||||||
0000024A PushI32 U32(2) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:3
|
00000254 Shl ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:11
|
||||||
00000250 PushConst U32(3) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:3
|
00000256 BitOr ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:11
|
||||||
00000256 Syscall U32(20481) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:3
|
00000258 PushI32 U32(0) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:11
|
||||||
0000025C Pop ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:3
|
0000025E PushI32 U32(3) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:11
|
||||||
0000025E PopScope ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:2
|
00000264 Shr ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:11
|
||||||
00000260 Jmp U32(614)
|
00000266 BitOr ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:11
|
||||||
00000266 PushI32 U32(4) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:6
|
00000268 PushI32 U32(0) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:12
|
||||||
0000026C Syscall U32(8194) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:6
|
0000026E PushI32 U32(0) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:12
|
||||||
00000272 JmpIfFalse U32(680) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:6
|
00000274 PushI32 U32(5) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:12
|
||||||
00000278 PushScope ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:6
|
0000027A PushI32 U32(5) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:12
|
||||||
0000027A PushI32 U32(1) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:7
|
00000280 GetLocal U32(0) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:12
|
||||||
00000280 PushI32 U32(0) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:7
|
00000286 Syscall U32(4098) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:12
|
||||||
00000286 PushI32 U32(255) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:7
|
0000028C Pop ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_gfx.ts:12
|
||||||
0000028C PushI32 U32(128) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:7
|
0000028E PopScope
|
||||||
00000292 PushI32 U32(1) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:7
|
00000290 PushConst U32(0)
|
||||||
00000298 Syscall U32(12289) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:7
|
00000296 Ret
|
||||||
0000029E Pop ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:7
|
00000298 PushScope ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:1
|
||||||
000002A0 PopScope ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:6
|
0000029A PushI32 U32(0) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:2
|
||||||
000002A2 Jmp U32(680)
|
000002A0 Syscall U32(8193) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:2
|
||||||
000002A8 PopScope
|
000002A6 JmpIfFalse U32(714) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:2
|
||||||
000002AA PushConst U32(0)
|
000002AC PushScope ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:2
|
||||||
000002B0 Ret
|
000002AE PushI32 U32(2) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:3
|
||||||
000002B2 PushScope ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:11
|
000002B4 PushConst U32(3) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:3
|
||||||
000002B4 Syscall U32(8451) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:12
|
000002BA Syscall U32(20481) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:3
|
||||||
000002BA JmpIfFalse U32(746) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:12
|
000002C0 Pop ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:3
|
||||||
000002C0 PushScope ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:12
|
000002C2 PopScope ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:2
|
||||||
000002C2 Syscall U32(8449) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:13
|
000002C4 Jmp U32(714)
|
||||||
000002C8 Syscall U32(8450) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:13
|
000002CA PushI32 U32(4) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:6
|
||||||
000002CE PushI32 U32(5) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:13
|
000002D0 Syscall U32(8194) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:6
|
||||||
000002D4 PushI32 U32(65535) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:13
|
000002D6 JmpIfFalse U32(780) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:6
|
||||||
000002DA Syscall U32(4100) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:13
|
000002DC PushScope ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:6
|
||||||
000002E0 Pop ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:13
|
000002DE PushI32 U32(1) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:7
|
||||||
000002E2 PopScope ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:12
|
000002E4 PushI32 U32(0) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:7
|
||||||
000002E4 Jmp U32(746)
|
000002EA PushI32 U32(255) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:7
|
||||||
000002EA PopScope
|
000002F0 PushI32 U32(128) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:7
|
||||||
000002EC PushConst U32(0)
|
000002F6 PushI32 U32(1) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:7
|
||||||
000002F2 Ret
|
000002FC Syscall U32(12289) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:7
|
||||||
|
00000302 Pop ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:7
|
||||||
|
00000304 PopScope ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:6
|
||||||
|
00000306 Jmp U32(780)
|
||||||
|
0000030C PopScope
|
||||||
|
0000030E PushConst U32(0)
|
||||||
|
00000314 Ret
|
||||||
|
00000316 PushScope ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:11
|
||||||
|
00000318 Syscall U32(8451) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:12
|
||||||
|
0000031E JmpIfFalse U32(846) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:12
|
||||||
|
00000324 PushScope ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:12
|
||||||
|
00000326 Syscall U32(8449) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:13
|
||||||
|
0000032C Syscall U32(8450) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:13
|
||||||
|
00000332 PushI32 U32(5) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:13
|
||||||
|
00000338 PushI32 U32(65535) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:13
|
||||||
|
0000033E Syscall U32(4100) ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:13
|
||||||
|
00000344 Pop ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:13
|
||||||
|
00000346 PopScope ; /Users/niltonconstantino/personal/workspace.personal/intrepid/prometeu/runtime/test-cartridges/color-square/src/my_input.ts:12
|
||||||
|
00000348 Jmp U32(846)
|
||||||
|
0000034E PopScope
|
||||||
|
00000350 PushConst U32(0)
|
||||||
|
00000356 Ret
|
||||||
|
|||||||
BIN
test-cartridges/color-square/build/program.pbc
Normal file
BIN
test-cartridges/color-square/build/program.pbc
Normal file
Binary file not shown.
File diff suppressed because it is too large
Load Diff
BIN
test-cartridges/color-square/cartridge/assets.pa
Normal file
BIN
test-cartridges/color-square/cartridge/assets.pa
Normal file
Binary file not shown.
@ -5,5 +5,19 @@
|
|||||||
"title": "Color Square",
|
"title": "Color Square",
|
||||||
"app_version": "0.1.0",
|
"app_version": "0.1.0",
|
||||||
"app_mode": "Game",
|
"app_mode": "Game",
|
||||||
"entrypoint": "0"
|
"entrypoint": "0",
|
||||||
|
"asset_table": [
|
||||||
|
{
|
||||||
|
"asset_id": "bgm_music",
|
||||||
|
"bank_type": "SOUNDS",
|
||||||
|
"offset": 0,
|
||||||
|
"size": 88200,
|
||||||
|
"decoded_size": 88200,
|
||||||
|
"codec": "RAW",
|
||||||
|
"metadata": {
|
||||||
|
"sample_rate": 44100
|
||||||
|
},
|
||||||
|
"preload_slot": 0
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
Binary file not shown.
@ -2,7 +2,15 @@ import {do_init_gfx, print_orange} from "./my_gfx";
|
|||||||
import {do_pad, do_touch} from "./my_input";
|
import {do_pad, do_touch} from "./my_input";
|
||||||
import {do_fs} from "./my_fs";
|
import {do_fs} from "./my_fs";
|
||||||
|
|
||||||
|
let music_started = false;
|
||||||
|
|
||||||
export function frame(): void {
|
export function frame(): void {
|
||||||
|
if (!music_started) {
|
||||||
|
// bank_id=0, sample_id=0, voice_id=0, volume=255, pan=127, pitch=1.0, loop_mode=1
|
||||||
|
audio.play(0, 0, 0, 128, 127, 1.0, 1);
|
||||||
|
music_started = true;
|
||||||
|
}
|
||||||
|
|
||||||
do_init_gfx();
|
do_init_gfx();
|
||||||
do_pad();
|
do_pad();
|
||||||
do_touch();
|
do_touch();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user