From 8c033d0787f76fcf9eb7cadf7f80acda59fa4f8f Mon Sep 17 00:00:00 2001 From: Pedro de Oliveira Date: Sat, 1 Jun 2013 01:09:11 +0100 Subject: [PATCH] Novos blocks e UDG implementados Mais documentacao de rotinas --- ParadiseCafe.ctl | 45 ++++++++++++++++++++++++++++++--------------- ParadiseCafe.py | 25 +++++++++++++++++-------- 2 files changed, 47 insertions(+), 23 deletions(-) diff --git a/ParadiseCafe.ctl b/ParadiseCafe.ctl index 131767d..dcf42f2 100644 --- a/ParadiseCafe.ctl +++ b/ParadiseCafe.ctl @@ -317,8 +317,13 @@ z $AFD0 c $AFD1 Limpa o ecra (genero de fade) c $B001 c $B01D + b $B0A9 + $B0A9 #HTML[#CALL:decode_data($89D6,$B0A9)] + b $B0E4 + $B0E4 #HTML[#CALL:decode_data($C420,$B0E4)] + b $B14C b $B1B5 t $B1FA @@ -397,14 +402,14 @@ c $B800 b $B811 Cara do gajo a olhar pra puta B $B811 #HTML[#CALL:decode_data($CAEA,$B811)] -c $B82E Animacao? +c $B82E Heroi vira a cara para o ecrã $B82E O endereço $5C36 CHARS define onde a Font(?) começa $B837 CHARS = $CE2A $B838 Endereço da frame - #R$B83F $B83B Desenha a frame -b $B83F -B $B83F #HTML[#CALL:decode_data($CA2A,$B83F)] +b $B83F Cara virada para o ecrã +B $B83F #HTML[#CALL:decode_data($CE2A,$B83F)] z $B858 @@ -515,24 +520,24 @@ c $BDDE b $BDE8 b $BE65 c $BEC5 -c $BEDC -b $BEE9 + +c $BEDC Saca a pistola + +b $BEE9 Frame - Sacar a pistola +B $BEE9 #HTML[#CALL:decode_data($D409,$BEE9)] ; Rotina principal do ladrão ; @label:$BF17=ladrao c $BF17 Ladrão $BF17,3 Abre a porta - $BF1A,5 ???? + $BF1A,5 Define a "LAST K" last pressed key = 00 (é para limpar IMEO) $BF1F Sai da porta $BF22 Vira-se para a esquerda $BF25 Endereço da frame - #R$BFE0 $BF28 Desenha a frame - $BF2B ?? - $BF2E A = $06 - $BF31 Delay com o valor em A - $BF34 $5C08 Ultima tecla carregada - $BF37 É o "0" ? - $BF39 Se for salta ! + $BF2B Randomizer + $BF2E,6 Delay com a duracao do valor em A + $BF34,8 $5C08 Se a ultima tecla carregada foi "0" entao é para disparar! $BF3C Tem lume? $BF66 Saca da pistola - Passe a carteira $BF8B Entra na porta @@ -555,6 +560,7 @@ b $C03B Balão - Não tenho pistola $C03B #HTML[#CALL:decode_data($D689,$C03B)] b $C052 + $C052 #HTML[#CALL:decode_data($D689,$C052)] b $C067 b $C07C b $C093 @@ -564,10 +570,16 @@ c $C192 ; Rotina executada quando se tenta disparar contra o ladrão c $C1C2 Disparar contra o ladrão - $C1C2 #R$C33D Endereço da pistola - $C1C5,5 Se não tiver salta + $C1C2,8 Se não tiver pistola chama #R$C23B + $C1E7,3 Saca a pistola para fora! + $C1EA,5 Delay com a duracao do valor em A + +c $C23B Não tenho pistola + $C23B Vira a cara para o ecrã #R$B83F + $C23E,$c Balão - Não tenho pistola, #R$C03B + $C24A,5 Delay com a duracao do valor em A + $C24F,6 Esconde o balão #R$C052 -c $C23B z $C258 ; Delay variavel @@ -618,6 +630,9 @@ t $C62B b $C62F t $CCC2 b $CCC5 + +;b $CD3B + t $CD63 b $CD68 t $D1CC diff --git a/ParadiseCafe.py b/ParadiseCafe.py index 6107d7b..cea3504 100644 --- a/ParadiseCafe.py +++ b/ParadiseCafe.py @@ -18,13 +18,20 @@ class ParadiseCafeHtmlWriter(HtmlWriter): def generate_block(self, cwd, char): - blockbytes = [] + blockbytes = [0, 0, 0, 0, 0, 0, 0, 0] if char == 0x80: blockbytes = [0, 0, 0, 0, 0, 0, 0, 0] - - if char == 0x8f: + elif char == 0x85: + blockbytes = [0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf, 0xf] + elif char == 0x8A: + blockbytes = [0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0] + elif char == 0x8B: + blockbytes = [0xff, 0xff, 0xff, 0xff, 0xf0, 0xf0, 0xf0, 0xf0] + elif char == 0x8f: blockbytes = [0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff] + else: + print "BLOCK %02X NOT IMPLEMENTED" % (char) return blockbytes @@ -134,12 +141,14 @@ class ParadiseCafeHtmlWriter(HtmlWriter): #print "U - addr: 0x%04X- val: 0x%02X" % (ad, v) # udg_array[x][y] = Udg(ad, self.snapshot[ad:ad+8]) - if (self.snapshot[addr] == 0x80): - zbr = self.generate_block(cwd, 0x80) - udg_array[x][y] = Udg(attr, zbr) - elif (self.snapshot[addr] == 0x8f): - zbr = self.generate_block(cwd, 0x8f) + # BLOCK CHARS + if (self.snapshot[addr] >= 0x80 and self.snapshot[addr] <= 0x8f): + zbr = self.generate_block(cwd, self.snapshot[addr]) udg_array[x][y] = Udg(attr, zbr) + elif (self.snapshot[addr] >= 0x90 and self.snapshot[addr] <= 0xa4): + v = ( self.snapshot[addr] - 0x90) + ad = ( 0xFF58 ) + (v*8) + udg_array[x][y] = Udg(ad, self.snapshot[ad:ad+8]) else: #print "N - addr: 0x%04X- val: 0x%04X" % (ad, v) udg_array[x][y] = Udg(attr, self.snapshot[ad:ad+8])