local cpu=manager.machine.devices[":maincpu"]; local dbg=manager.machine.debugger; local fr=0; local seen=0; local inst=false local cnt={}; local lf=io.open("st.txt","w") local P={0x2001E6,0x2001FA,0x20020E,0x200222,0x200232,0x200246,0x200250,0x20025A,0x200272,0x2002D6,0x200432,0x200458,0x2004CA,0x2004DA,0x2004E2,0x2004F0} emu.register_frame_done(function() fr=fr+1 if fr==1500 and not inst then inst=true for _,p in ipairs(P) do cpu.debug:bpset(p,"1",string.format('printf "S%06x a3_32=%%d a2_32=%%d c466=%%d" ,w@(a3+32),w@(a2+32),w@ffc466 ; go',p)) end end if inst and dbg.execution_state~="run" then dbg.execution_state="run" end local log=dbg.consolelog; for k=seen+1,#log do local l=log[k]; local s=l:match("^S(%x+)"); if s then cnt[s]=(cnt[s] or 0)+1; if (cnt[s])<=3 then lf:write(fr," ",l,"\n") end end end; seen=#log if fr%5000==0 or fr==30000 then local ks={} for k,v in pairs(cnt) do ks[#ks+1]=k end table.sort(ks); for _,k in ipairs(ks) do lf:write(fr," ",k," ",cnt[k],"\n") end lf:flush() end if fr==30000 then manager.machine:exit() end end)