Skip to content

Instantly share code, notes, and snippets.

@binji
Created June 12, 2020 19:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save binji/5dcc02eb0d64d151e079ff3a5388df2c to your computer and use it in GitHub Desktop.
Save binji/5dcc02eb0d64d151e079ff3a5388df2c to your computer and use it in GitHub Desktop.
chip8 decompiled
export memory mem(initial: 1, max: 0);
global g_a:int = 512;
global g_b:int = 144;
global g_c:int = 0;
global g_d:int = 0;
global g_e:int = 0;
data d_pPpPPPP(offset: 0) =
"\f0\90\90\90\f0` p\f0\10\f0\80\f0\f0\10\f0\10\f0\a0\a0\f0 \f0\80\f0"
"\10\f0\f0\80\f0\90\f0\f0\10\10\10\10\f0\90\f0\90\f0\f0\90\f0\10\f0\f0\90"
"\f0\90\90\f0PpP\f0\f0\80\80\80\f0\f0PPP\f0\f0\80\f0\80\f0\f0\80\f0\80\80"
"";
import function Math_random():float;
export function run(a:int) {
var h:int;
var k:int;
var j:int;
var e:int;
var i:int;
var e:int;
var i:int;
var e:int;
var f:int;
var i:int;
var e:int;
var i:int;
var h:int;
var f:int;
var e:int;
var f:int;
var e:int;
var f:int;
var e:int;
var f:int;
var e:int;
var f:int;
var e:int;
var e:int;
var e:int;
var f:int;
var e:int;
var f:int;
var f:int;
var f:int;
var f:int;
var e:int;
var f:int;
var e:int;
var f:int;
var f:int;
var e:int;
var f:int;
var j:int;
var j:int;
var i:int;
var f:int;
var e:int;
var s:long;
var g:int;
var h:int;
var g:int;
var e:int;
var i:int;
var i:int;
var e:int;
var i:int;
var e:int;
var e:int;
var e:int;
var e:int;
var e:int;
var e:int;
var d:int;
var m:int;
var n:int;
var l:int;
var n:int;
var n:int;
var n:int;
var d:int;
var k:int;
var d:int;
var e:int;
var g:int;
var d:int;
var e:int;
var k:int;
var q:int_ptr;
var c:int;
var c:int;
if (g_d) { g_d = g_d - 1 }
if (g_e) { g_e = g_e - 1 }
loop L_d {
g_a =
{
e =
{
e =
{
({
k = g_a + 2;
c = g_a[0]:ubyte;
d = c & 15;
e = d[96]:ubyte;
i = g_a[1]:ubyte;
f = (i >> 4)[96]:ubyte;
h = i & 15;
j = d << 8 | i;
br_table[B_aa, B_y, B_z, B_x, B_w, B_v, B_u, B_t, B_s, B_r, B_q, B_p, B_o, B_n, B_m, ..B_l](
c >> 4);
label B_aa:
if (h) {
k = g_b[0]:ushort;
g_b = g_b + 2;
goto B_f;
} else {
l = 12544;
m = 4096;
d = 255;
goto B_j;
}
label B_z:
g_b = g_b - 2;
g_b[0]:short = k;
label B_y:
j;
goto B_e;
label B_x:
e == i;
goto B_i;
label B_w:
e != i;
goto B_i;
label B_v:
e == f;
goto B_i;
label B_u:
i;
goto B_g;
label B_t:
e + i;
goto B_g;
label B_s:
br_table[B_ka, B_ja, B_ia, B_ha, B_ga, B_fa, B_ea, B_da, ..B_ca](h)
label B_ka:
f;
goto B_g;
label B_ja:
e | f;
goto B_g;
label B_ia:
e & f;
goto B_g;
label B_ha:
e ^ f;
goto B_g;
label B_ga:
e = e + f;
g = e >> 8;
e;
goto B_h;
label B_fa:
g = e >= f;
e - f;
goto B_h;
label B_ea:
g = f & 1;
f >> 1;
goto B_h;
label B_da:
g = f >= e;
f - e;
goto B_h;
label B_ca:
g = f >> 7;
f << 1;
goto B_h;
label B_r:
e != f;
goto B_i;
label B_q:
g_c = j;
goto B_f;
label B_p:
j + 0[96]:ubyte;
goto B_e;
label B_o:
i32_trunc_f32_u(Math_random() * 256.0f) & i;
goto B_g;
label B_n:
g = 0;
n = 0;
loop L_la {
var o:long_ptr = 31 - (f + n & 31) << 3;
var r:long =
i64_extend_i32_u((g_c + n)[0]:ubyte) >> i64_extend_i32_u(e) + 8L;
o[512] = (s = o[512]) ^ r;
g = g | (s & r) != 0L;
n = n + 1;
if (n < h) continue L_la;
}
0[111]:byte = g;
goto B_f;
label B_m:
(0[40]:ushort >> e & 1) ^ i == 161;
goto B_i;
label B_l:
br_table[B_ta, B_sa, B_ra, B_qa, B_qa, B_pa, B_oa, B_oa, B_oa, B_oa, B_na, B_na, ..B_ma](
i >> 3)
label B_ta:
g_d;
goto B_g;
label B_sa:
var b:int = 0[40]:ushort;
if (b) {
ctz(b);
goto B_g;
}
goto B_c;
label B_ra:
g_d = e;
goto B_f;
label B_qa:
if (i == 24) { g_e = e } else { g_c = g_c + e & 65535 }
goto B_f;
label B_pa:
g_c = (e & 15) * 5;
goto B_f;
label B_oa:
g_c[0]:byte = e / 100 % 10;
g_c[1]:byte = e / 10 % 10;
g_c[2]:byte = e % 10;
goto B_f;
label B_na:
l = 96;
m = g_c;
goto B_k;
label B_ma:
l = g_c;
m = 96;
label B_k:
g_c = g_c + d + 1 & 65535;
label B_j:
n = 0;
loop L_wa {
(m + n)[0]:byte = (l + n)[0]:ubyte;
n = n + 1;
if (n <= d) continue L_wa;
}
goto B_f;
label B_i:
} <<
1) +
k;
goto B_e;
label B_h:
}
d[96]:byte = e;
0[111]:byte = g;
goto B_f;
label B_g:
}
d[96]:byte = e;
label B_f:
k;
label B_e:
}
a = a - 1;
if (a) continue L_d;
}
label B_c:
var p:ubyte_ptr = 256;
loop L_xa {
c = p[4095];
loop L_ya {
q[1088] = if (c & 128) { -1 } else { -16777216 }
c = c << 1;
q = q + 4;
if (q & 31) continue L_ya;
}
p = p - 1;
if (p) continue L_xa;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment