[Python] Reverse engineering di Head On 2 (era: Re: Python vs Java)

Nicola Larosa nico a tekNico.net
Sab 3 Gen 2015 18:03:19 CET


[La smetto presto con questo off-topic totale, promesso.]

> Nicola Larosa wrote:
>> Se qualcuno fosse interessato a questa follia, dei compagni di
>> viaggio sono più che graditi.

Daniele Tricoli wrote:
> Mi piacerebbe poterti dare una mano! Conta però che di Go ho letto
> solo questo [...] Di assembly ho studiato ovviamente DLX, ma anche
> MIPS [...]
> 
> Dimmi come posso esserti d'aiuto!

Grazie mille per l'offerta, Daniele. :-)

Sto cercando di ricostruire l'esatta logica di funzionamento di questo
gioco, per poi riprodurla in un linguaggio più moderno (e più umano :-) ).

Il lavoro si divide in due parti, parzialmente sovrapposte.

La prima, più rognosa, è di fare il reverse engineering del codice del
gioco. Si tratta di 8KB di assembly Z80, che include anche qualche dato,
quindi qualche migliaio di istruzioni. Sto usando z80dasm per generare il
disassemblato di partenza, e il debugger di MAME per seguire il
funzionamento del gioco.

La seconda, più divertente, è di riscrivere la logica del gioco in Go, a
mano a mano che vien fuori dalla prima parte. Vorrei mantenerla il più
vicino possibile all'originale, quindi usare le stesse strutture dati e
riprodurre gli algoritmi così come sono, anche se ovviamente calati nella
struttura di un linguaggio moderno. Per la parte grafica, come dicevo,
penso di usare Azul3D.

Chiaramente si tratta di una faticata. La motivazione sufficiente per
affrontarla potrebbe venire o da un investimento emotivo nel gioco, o dal
divertimento di fare reverse engineering di codice assembly di vecchi
processori a 8 bit, o da qualcos'altro che non mi viene in mente.

Tu dove ti collochi? :-)

-- 
Nicola 'tekNico' Larosa <http://www.tekNico.net/>

ZeroMQ multithreading will take everything you know about writing MT
applications, throw it into a heap in the garden, pour gasoline over
it, and set it alight. It's a rare book that deserves burning, but
most books on concurrent programming do. - Pieter Hintjens, 2013


Maggiori informazioni sulla lista Python