topherCantrell / computerarcheology

All of the code and resources backing computerarcheology.com (moving from SVN there)
http://computerarcheology.com
41 stars 10 forks source link

More Vector ROM updates #2

Closed slx7R4GDZM closed 9 years ago

slx7R4GDZM commented 9 years ago

So I figured out what the stuff at the end of the Vector ROM was. Turns out it was just some text in a strange format and the thrust table. Also, I fixed the binary name since all the information and addresses on the page pertain to the v1 VROM. As for the credit thing you could just put my name wherever.

slx7R4GDZM commented 9 years ago

Just noticed that I forgot to update the sine table addresses after moving some text around. The correct addresses are:

0FBB: 00 03 06 09 0c 10 13 16
0FC3: 19 1c 1f 22 25 28 2b 2e
0FCB: 31 33 36 39 3c 3f 41 44
0FD3: 47 49 4c 4e 51 53 55 58
0FDB: 5a 5c 5e 60 62 64 66 68
0FE3: 6a 6b 6d 6f 70 71 73 74
0FEB: 75 76 78 79 7a 7a 7b 7c
0FF3: 7d 7d 7e 7e 7e 7f 7f 7f
0FFB: 7f
topherCantrell commented 9 years ago

Very awesome! I updated and deployed the changes. Eventually I'll run the vector-disassembler on the messages themselves.

Thanks again!

http://computerarcheology.com/Arcade/Asteroids/VectorROM.html#Messages

On Wed, Jul 8, 2015 at 6:49 AM, slx7R4GDZM notifications@github.com wrote:

Just noticed that I forgot to update the sine table addresses after moving some text around. The correct addresses are:

0FBB: 00 03 06 09 0c 10 13 16 0FC3: 19 1c 1f 22 25 28 2b 2e 0FCB: 31 33 36 39 3c 3f 41 44 0FD3: 47 49 4c 4e 51 53 55 58 0FDB: 5a 5c 5e 60 62 64 66 68 0FE3: 6a 6b 6d 6f 70 71 73 74 0FEB: 75 76 78 79 7a 7a 7b 7c 0FF3: 7d 7d 7e 7e 7e 7f 7f 7f 0FFB: 7f

— Reply to this email directly or view it on GitHub https://github.com/topherCantrell/computerarcheology/pull/2#issuecomment-119548661 .

topherCantrell commented 9 years ago

Can you explain how these bytes become the string of letters?

; HIGH SCORES 0F2B: 63 56 60 6e 3c ec 4d c0 ; PLAYER 0F33: a4 0a ea 6c 08 00

I was thinking 5-bits per letter, but that isn't working out.

On Wed, Jul 8, 2015 at 7:32 AM, Christopher Cantrell < tophercantrell@gmail.com> wrote:

Very awesome! I updated and deployed the changes. Eventually I'll run the vector-disassembler on the messages themselves.

Thanks again!

http://computerarcheology.com/Arcade/Asteroids/VectorROM.html#Messages

On Wed, Jul 8, 2015 at 6:49 AM, slx7R4GDZM notifications@github.com wrote:

Just noticed that I forgot to update the sine table addresses after moving some text around. The correct addresses are:

0FBB: 00 03 06 09 0c 10 13 16 0FC3: 19 1c 1f 22 25 28 2b 2e 0FCB: 31 33 36 39 3c 3f 41 44 0FD3: 47 49 4c 4e 51 53 55 58 0FDB: 5a 5c 5e 60 62 64 66 68 0FE3: 6a 6b 6d 6f 70 71 73 74 0FEB: 75 76 78 79 7a 7a 7b 7c 0FF3: 7d 7d 7e 7e 7e 7f 7f 7f 0FFB: 7f

— Reply to this email directly or view it on GitHub https://github.com/topherCantrell/computerarcheology/pull/2#issuecomment-119548661 .

slx7R4GDZM commented 9 years ago

Honestly I'm not entirely sure, I never quite figured out how they worked but I figured out what they were. It seems to be 5-bits per character grouped in three with the 16th bit only ever being turned on to indicate the end of a sequence without needing to use a bunch of 0s in the next byte. Although, if the character's value is above 31 then the 6th bit gets stored in a byte further down or something. tl;dr idk but maybe you can figure it out :p

topherCantrell commented 9 years ago

These challenges are the reason I do computer archeology!

I figured it out and updated the site. Here are the comments:

;; Messages are packed with 3 characters in 2 bytes (3 5-bit characters). ;; The upper 15 bits are used. If the last bit is set then the message terminates. ;; If the last bit is clear then the next two bytes are parsed UNLESS the parser ;; finds a 00000 character. That pattern terminates the message too. ;; ;; Here is the character map for a 5 bit character (00-1F): ;; "@_012ABCDEFGHIJKLMNOPQRSTUVWXYZ" ;; Again ... a 0 ("@") terminates the message

; HIGH SCORES ; 01100_01101_01011_0 01100_00001_10111_0 00111_10011_10110_0 01001_10111_000000 ; H I G H S C O R E S @ 0F2B: 63 56 60 6e 3c ec 4d c0

; PLAYER_ ; 10100_10000_00101_0 11101_01001_10110_0 00001_00000_000000 ; P L A Y E R @ @ 0F33: a4 0a ea 6c 08 00

; YOUR SCORE IS ONE OF THE TEN BEST ; 11101_10011_11001_0 10110_00001_10111_0 00111_10011_10110_0 01001_00001_01101_0 10111_00001_10011_0 10010_01001_00001_0 10011_01010_00001_0 11000_01100_01001_0 00001_11000_01001_0 10010_00001_00110_0 01001_10111_110001 ; Y O U R S C O R E I S O N E O F T H E T E N B E S T @ 0F39: ec f2 b0 6e 3c ec 48 5a b8 66 92 42 9a 82 c3 12 0e 12 90 4c 4d f1

; PEASE ENTER YOUR INITIALS ; 10100_10000_01001_0 00101_10111_01001_0 00001_01001_10010_0 11000_01001_10110_0 00001_11101_10011_0 11001_10110_00001_0 01101_10010_01101_0 11000_01101_00101_0 10000_10111_000000 ; P L E A S E E N T E R Y O U R I N I T I A L S @ 0F4F: a4 12 2d d2 0a 64 c2 6c 0f 66 cd 82 6c 9a c3 4a 85 c0

; PUSH ROTATE TO SELECT LETTER ; 10100_11001_10111_0 01100_00001_10110_0 10011_11000_00101_0 11000_01001_00001_0 11000_10011_00001_0 10111_01001_10000_0 01001_00111_11000_0 00001_10000_01001_0 11000_11000_01001_0 10110_00000_000000 ; P U S H R O T A T E T O S E L E C T _ L E T T E R @ @ 0F61: a6 6e 60 6c 9e 0a c2 42 c4 c2 ba 60 49 f0 0c 12 c6 12 b0 00

; PUSH HYPERSPACE WHEN LETTER IS CORRECT ; 10100_11001_10111_0 01100_00001_01100_0 11101_10100_01001_0 10110_10111_10100_0 00101_00111_01001_0 00001_11011_01100_0 01001_10010_00001_0 10000_01001_11000_0 11000_01001_10110_0 00001_01101_10111_0 00001_00111_10011_0 10110_10110_01001_0 00111_11000_000000 ; P U S H H Y P E R S P A C E W H E N L E T T E R I S C O R R E C T @ 0F75: a6 6e 60 58 ed 12 b5 e8 29 d2 0e d8 4c 82 82 70 c2 6c 0b 6e 09 e6 b5 92 3e 00

; PUSH START ; 10100_11001_10111_0 01100_00001_10111_0 11000_00101_10110_0 11000_00000_00000_0 ; P U S H S T A R T @ @

0F8F: a6 6e 60 6e c1 6c c0 00

; GAME OVER ; 01011_00101_10001_0 01001_00001_10011_0 11010_01001_101101 ; G A M E O V E R @ 0F97: 59 62 48 66 d2 6d

; 1 COIN 2 PLAYS ; 00011_00001_00111_0 10011_01101_10010_0 00001_00100_00001_0 10100_10000_00101_0 11101_10111_000000 ; 1 C O I N 2 P L A Y S @ 0F9D: 18 4e 9b 64 09 02 a4 0a ed c0

; 1 COIN 1 PLAY ; 00011_00001_00111_0 10011_01101_10010_0 00001_00011_00001_0 10100_10000_00101_0 11101_00000_000000 ; 1 C O I N 1 P L A Y @ @ 0FA7: 18 4e 9b 64 08 c2 a4 0a e8 00

; 2 COINS 1 PLAY ; 00100_00001_00111_0 10011_01101_10010_0 10111_00001_00011_0 00001_10100_10000_0 00101_11101_000000 ; 2 C O I N S 1 P L A Y @ 0FB1: 20 4e 9b 64 b8 46 0d 20 2f 40

On Wed, Jul 8, 2015 at 5:33 PM, slx7R4GDZM notifications@github.com wrote:

Honestly I'm not entirely sure, I never quite figured out how they worked but I figured out what they were. It seems to be 5-bits per character grouped in three with the 16th bit only ever being turned on to indicate the end of a sequence without needing to use a bunch of 0s in the next byte. Although, if the character's value is above 31 then the 6th bit gets stored in a byte further down or something. tl;dr idk but maybe you can figure it out :p

— Reply to this email directly or view it on GitHub https://github.com/topherCantrell/computerarcheology/pull/2#issuecomment-119750339 .

slx7R4GDZM commented 9 years ago

You're good. I just figured it out a few minutes ago too but you beat me to it.