Created
June 12, 2020 19:59
-
-
Save binji/5dcc02eb0d64d151e079ff3a5388df2c to your computer and use it in GitHub Desktop.
chip8 decompiled
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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