StanJr Posted January 3, 2004 Share Posted January 3, 2004 I'm doing a pretty comprehensive graphic overhaul of ET (I expect it to take a LONG time), but I cannot find the 3 phone pieces with Hack o Matic! I can located everything else I need (except maybe the flower), but these elude me thus far. Anybody know where to find them in HOM? Oh, and why are there SO many animations for Elliott and the Scientist??? Egad! Better yet does the game Elliott have a different set of walk animations than the completion screen Elliot? Quote Link to comment Share on other sites More sharing options...
neotokeo2001 Posted January 3, 2004 Share Posted January 3, 2004 I've never looked at ET. I'll see if I can find them. Quote Link to comment Share on other sites More sharing options...
neotokeo2001 Posted January 3, 2004 Share Posted January 3, 2004 Anyone have a Disassembly of ET? Quote Link to comment Share on other sites More sharing options...
Inky Posted January 3, 2004 Share Posted January 3, 2004 The pieces are there, but because of their irregular shape, they're hard to find. It helps to have a printout or image of them handy when looking for them. I found this out the hard way whilst attempting an 'X-Files' hack of ET a while back. Quote Link to comment Share on other sites More sharing options...
Nukey Shay Posted January 3, 2004 Share Posted January 3, 2004 Hmm...I couldn't find them even using Dos debug (to search for strings of bytes). Here's a list of values that each piece might be using (straight pixel-to-bit translation): H piece: 90 C8 64 32 3F 32 64 C8 90 S piece: 1F 3E 54 A8 54 2A 15 2A 7C F8 W piece: 3C 60 C0 FE AA FE 0E 38 E0 FF I searched for the standard strings (forward and back), inverse values of the standard strings (forward and back), and a mixed table of the strings (forward and back). That last one would be one row of bytes from each sprite, then the next row, etc. No luck on any of them. There must be some kind of logic routine? EDIT: here's a closeup of those pieces. The purple telephone appears in the game @ 1be0 though. Quote Link to comment Share on other sites More sharing options...
ATARI TROLL Posted January 4, 2004 Share Posted January 4, 2004 Here are a few pics for ya stan! I find it easy to hack by site. So I usually do print screens and draw by eye. There will be one more reply with 2 more pics. Total 7. Cheers Quote Link to comment Share on other sites More sharing options...
ATARI TROLL Posted January 4, 2004 Share Posted January 4, 2004 2 more for ya! Quote Link to comment Share on other sites More sharing options...
Nukey Shay Posted January 4, 2004 Share Posted January 4, 2004 That's very pretty...but it doesn't really help him find the sprites he's looking for. neotokeo's got it right I think...you are gonna have to look at a disassembly to find out how those sprites are called up. They don't appear in memory as they appear on the screen, that much I am sure of (otherwise, debug would have found them). Quote Link to comment Share on other sites More sharing options...
StanJr Posted January 4, 2004 Author Share Posted January 4, 2004 That is exactly what I feared Nukey. And the same must go for the flower images as well. Neither one are of vital importance to my hack, but I'd like to change them if I could. I located the complete phone, its pretty obvious. i wonder why those 5 particular objects are different from the rest?? Thanks for the help! Quote Link to comment Share on other sites More sharing options...
StanJr Posted January 7, 2004 Author Share Posted January 7, 2004 WELL, I was going to try to take a screen shot of some of my work in progress, but I can't seem to make it work. I'm using z26 emu, but the capture I take is saved as a .pcx file and none of my image programs can read that type of file. And I've tried to do a screen capture but all I get is a black screen. So unless someone can enlighten me, I guess you'll all just have to wait. Quote Link to comment Share on other sites More sharing options...
Nukey Shay Posted January 7, 2004 Share Posted January 7, 2004 Some freewares here: http://www.webattack.com/freeware/gmm/fwgr...aphicedit.shtml I thought MSPaint supported PCX? Quote Link to comment Share on other sites More sharing options...
Nukey Shay Posted January 7, 2004 Share Posted January 7, 2004 Here's a tip for finding those missing GFX... phonePieceLst ($ca) is used to determine what pieces have been collected, right? Perhaps looking around for that variable would help tracking down the routine? Which in turn will help track down the list of data that it is reading? Looking... Quote Link to comment Share on other sites More sharing options...
Nukey Shay Posted January 7, 2004 Share Posted January 7, 2004 bd7a, bd80, bd86, and bd8c looks like it might be related somehow... Called from routine b32b. Still unsure...I'm having trouble looking at what it is supposed to be doing with the data (?) Is that a bankswitch routine? Quote Link to comment Share on other sites More sharing options...
Nukey Shay Posted January 7, 2004 Share Posted January 7, 2004 It AND's phonePieceLst to the table data at the JSR'ed routine Lbae3? Oh man (help) Quote Link to comment Share on other sites More sharing options...
Nukey Shay Posted January 7, 2004 Share Posted January 7, 2004 Ooo...I think I've found something... Look at $fea8 in the second file. Every successive byte seems to be matching up with EVERY OTHER line in the H piece! Scrambled...eh? Quote Link to comment Share on other sites More sharing options...
Nukey Shay Posted January 7, 2004 Share Posted January 7, 2004 Yep...it matches .byte %10010000; $90; |X X | $fea8 h1 .byte %01100100; $64; | XX X | $fea9 h3 .byte %00111111; $3f; | XXXXXX| $feaa h5 .byte %01100100; $64; | XX X | $feab h7 .byte %10010000; $90; |X X | $feac h9 .byte %11001000; $c8; |XX X | $fead h2 .byte %00110010; $32; | XX X | $feae h4 .byte %00110010; $32; | XX X | $feaf h6 .byte %11001000; $c8; |XX X | $feb0 h8 .byte %00000000; $00; | | $feb1 h10 The first bytes are the odd numbered lines, the next group are evens Here it is unscrambled: .byte %10010000; $90; |X X | $fea8 h1 .byte %11001000; $c8; |XX X | $fead h2 .byte %01100100; $64; | XX X | $fea9 h3 .byte %00110010; $32; | XX X | $feae h4 .byte %00111111; $3f; | XXXXXX| $feaa h5 .byte %00110010; $32; | XX X | $feaf h6 .byte %01100100; $64; | XX X | $feab h7 .byte %11001000; $c8; |XX X | $feb0 h8 .byte %10010000; $90; |X X | $feac h9 .byte %00000000; $00; | | $feb1 h10 There's your H piece Quote Link to comment Share on other sites More sharing options...
Nukey Shay Posted January 7, 2004 Share Posted January 7, 2004 and here is the s and w pieces scrambled: .byte %00011111; $1f; | XXXXX| $feb2 s1 .byte %01010100; $54; | X X X | $feb3 s3 .byte %01010100; $54; | X X X | $feb4 s5 .byte %00010101; $15; | X X X| $feb5 s7 .byte %01111100; $7c; | XXXXX | $feb6 s9 .byte %00111110; $3e; | XXXXX | $feb7 s2 .byte %10101000; $a8; |X X X | $feb8 s4 .byte %00101010; $2a; | X X X | $feb9 s6 .byte %00101010; $2a; | X X X | $feba s8 .byte %11111000; $f8; |XXXXX | $febb s10 .byte %00111100; $3c; | XXXX | $febc w1 .byte %11000000; $c0; |XX | $febd w3 .byte %10101010; $aa; |X X X X | $febe w5 .byte %00001110; $0e; | XXX | $febf w7 .byte %11100000; $e0; |XXX | $fec0 w9 .byte %01100000; $60; | XX | $fec1 w2 .byte %11111110; $fe; |XXXXXXX | $fec2 w4 .byte %11111110; $fe; |XXXXXXX | $fec3 w6 .byte %00111000; $38; | XXX | $fec4 w8 .byte %11111111; $ff; |XXXXXXXX| $fec5 w10 ...and unscrambled... .byte %00011111; $1f; | XXXXX| $feb2 s1 .byte %00111110; $3e; | XXXXX | $feb7 s2 .byte %01010100; $54; | X X X | $feb3 s3 .byte %10101000; $a8; |X X X | $feb8 s4 .byte %01010100; $54; | X X X | $feb4 s5 .byte %00101010; $2a; | X X X | $feb9 s6 .byte %00010101; $15; | X X X| $feb5 s7 .byte %00101010; $2a; | X X X | $feba s8 .byte %01111100; $7c; | XXXXX | $feb6 s9 .byte %11111000; $f8; |XXXXX | $febb s10 .byte %00111100; $3c; | XXXX | $febc w1 .byte %01100000; $60; | XX | $fec1 w2 .byte %11000000; $c0; |XX | $febd w3 .byte %11111110; $fe; |XXXXXXX | $fec2 w4 .byte %10101010; $aa; |X X X X | $febe w5 .byte %11111110; $fe; |XXXXXXX | $fec3 w6 .byte %00001110; $0e; | XXX | $febf w7 .byte %00111000; $38; | XXX | $fec4 w8 .byte %11100000; $e0; |XXX | $fec0 w9 .byte %11111111; $ff; |XXXXXXXX| $fec5 w10 I imagine the flower might be using the same technique. EDIT...it's similar, but even more scrambled. 7 odd lines for all 4 frames, followed by the 7 even lines. Scrambled: .byte %00000000; $00; | | $f9be a1 .byte %00000000; $00; | | $f9bf a3 .byte %00000000; $00; | | $f9c0 a5 .byte %00001010; $0a; | X X | $f9c1 a7 .byte %00011010; $1a; | XX X | $f9c2 a9 .byte %01110110; $76; | XXX XX | $f9c3 a11 .byte %00111010; $3a; | XXX X | $f9c4 a13 .byte %00000000; $00; | | $f9c5 b1 .byte %00000000; $00; | | $f9c6 b3 .byte %00011100; $1c; | XXX | $f9c7 b5 .byte %00011100; $1c; | XXX | $f9c8 b7 .byte %00100000; $20; | X | $f9c9 b9 .byte %00011100; $1c; | XXX | $f9ca b11 .byte %00111000; $38; | XXX | $f9cb b13 .byte %00000000; $00; | | $f9cc c1 .byte %00010100; $14; | X X | $f9cd c3 .byte %00011100; $1c; | XXX | $f9ce c5 .byte %00010000; $10; | X | $f9cf c7 .byte %00011100; $1c; | XXX | $f9d0 c9 .byte %00010000; $10; | X | $f9d1 c11 .byte %00011000; $18; | XX | $f9d2 c13 .byte %00010100; $14; | X X | $f9d3 d1 .byte %00011100; $1c; | XXX | $f9d4 d3 .byte %00010100; $14; | X X | $f9d5 d5 .byte %00001000; $08; | X | $f9d6 d7 .byte %00001100; $0c; | XX | $f9d7 d9 .byte %00001000; $08; | X | $f9d8 d11 .byte %00011000; $18; | XX | $f9d9 d13 .byte %00000000; $00; | | $f9da a2 .byte %00000000; $00; | | $f9db a4 .byte %00000000; $00; | | $f9dc a6 .byte %00001101; $0d; | XX X| $f9dd a8 .byte %00000111; $07; | XXX| $f9de a10 .byte %01000000; $40; | X | $f9df a12 .byte %00001000; $08; | X | $f9e0 a14 .byte %00000000; $00; | | $f9e1 b2 .byte %00000000; $00; | | $f9e2 b4 .byte %00101010; $2a; | X X X | $f9e3 b6 .byte %00001010; $0a; | X X | $f9e4 b8 .byte %00100000; $20; | X | $f9e5 b10 .byte %00001010; $0a; | X X | $f9e6 b12 .byte %00001000; $08; | X | $f9e7 b14 .byte %00000000; $00; | | $f9e8 c2 .byte %00101010; $2a; | X X X | $f9e9 c4 .byte %00101010; $2a; | X X X | $f9ea c6 .byte %00010000; $10; | X | $f9eb c8 .byte %00010010; $12; | X X | $f9ec c10 .byte %00101000; $28; | X X | $f9ed c12 .byte %00001000; $08; | X | $f9ee c14 .byte %00101010; $2a; | X X X | $f9ef d2 .byte %00101010; $2a; | X X X | $f9f0 d4 .byte %00001000; $08; | X | $f9f1 d6 .byte %00001010; $0a; | X X | $f9f2 d8 .byte %00001000; $08; | X | $f9f3 d10 .byte %00101000; $28; | X X | $f9f4 d12 .byte %00001000; $08; | X | $f9f5 d14 ...unscrambled: .byte %00000000; $00; | | $f9be a1 .byte %00000000; $00; | | $f9da a2 .byte %00000000; $00; | | $f9bf a3 .byte %00000000; $00; | | $f9db a4 .byte %00000000; $00; | | $f9c0 a5 .byte %00000000; $00; | | $f9dc a6 .byte %00001010; $0a; | X X | $f9c1 a7 .byte %00001101; $0d; | XX X| $f9dd a8 .byte %00011010; $1a; | XX X | $f9c2 a9 .byte %00000111; $07; | XXX| $f9de a10 .byte %01110110; $76; | XXX XX | $f9c3 a11 .byte %01000000; $40; | X | $f9df a12 .byte %00111010; $3a; | XXX X | $f9c4 a13 .byte %00001000; $08; | X | $f9e0 a14 .byte %00000000; $00; | | $f9c5 b1 .byte %00000000; $00; | | $f9e1 b2 .byte %00000000; $00; | | $f9c6 b3 .byte %00000000; $00; | | $f9e2 b4 .byte %00011100; $1c; | XXX | $f9c7 b5 .byte %00101010; $2a; | X X X | $f9e3 b6 .byte %00011100; $1c; | XXX | $f9c8 b7 .byte %00001010; $0a; | X X | $f9e4 b8 .byte %00100000; $20; | X | $f9c9 b9 .byte %00100000; $20; | X | $f9e5 b10 .byte %00011100; $1c; | XXX | $f9ca b11 .byte %00001010; $0a; | X X | $f9e6 b12 .byte %00111000; $38; | XXX | $f9cb b13 .byte %00001000; $08; | X | $f9e7 b14 .byte %00000000; $00; | | $f9cc c1 .byte %00000000; $00; | | $f9e8 c2 .byte %00010100; $14; | X X | $f9cd c3 .byte %00101010; $2a; | X X X | $f9e9 c4 .byte %00011100; $1c; | XXX | $f9ce c5 .byte %00101010; $2a; | X X X | $f9ea c6 .byte %00010000; $10; | X | $f9cf c7 .byte %00010000; $10; | X | $f9eb c8 .byte %00011100; $1c; | XXX | $f9d0 c9 .byte %00010010; $12; | X X | $f9ec c10 .byte %00010000; $10; | X | $f9d1 c11 .byte %00101000; $28; | X X | $f9ed c12 .byte %00011000; $18; | XX | $f9d2 c13 .byte %00001000; $08; | X | $f9ee c14 .byte %00010100; $14; | X X | $f9d3 d1 .byte %00101010; $2a; | X X X | $f9ef d2 .byte %00011100; $1c; | XXX | $f9d4 d3 .byte %00101010; $2a; | X X X | $f9f0 d4 .byte %00010100; $14; | X X | $f9d5 d5 .byte %00001000; $08; | X | $f9f1 d6 .byte %00001000; $08; | X | $f9d6 d7 .byte %00001010; $0a; | X X | $f9f2 d8 .byte %00001100; $0c; | XX | $f9d7 d9 .byte %00001000; $08; | X | $f9f3 d10 .byte %00001000; $08; | X | $f9d8 d11 .byte %00101000; $28; | X X | $f9f4 d12 .byte %00011000; $18; | XX | $f9d9 d13 .byte %00001000; $08; | X | $f9f5 d14 That's a wrap Quote Link to comment Share on other sites More sharing options...
StanJr Posted January 7, 2004 Author Share Posted January 7, 2004 Holy Mack-arel! Nukey you are the total cat's pj's. Rock on dude. I would have NEVER found those, especially as jumbled as they were. You are the king of all things. Now let me ask you a few things. Once you found them in the code, how did you unscramble them, and could I hack them in their unscrambled form? How would I go about hacking them? And how would I rescramble them back the way they were? Dude you are totally invaluable. I cannot thank you enough. Quote Link to comment Share on other sites More sharing options...
Nukey Shay Posted January 7, 2004 Share Posted January 7, 2004 What I would do is just make a quick chart of all the frames in the unscrambled form...and off to the side, write down the scrambled sequence (literally write down A1, A3, A5, etc.). Then when you are hacking with HOM (or putting the .byte values into the disassembly), follow that sequence and glance back to the bitpattern on the left to see what pattern (or value) you need for that line. A bit slow, but it keeps things from getting confusing. Unfortunately, you can't just copy and paste an unscrambled list into the disassembly (because the byte addresses need to be in sequence). All the correct addresses are shown above (in HOM, the first nybble "f" will appear as "1"). So you could even just look at the addresses and scroll around as you hack them in. -or- The routine that fetches the data could be altered so that they no longer need to be scrambled in memory (and relocateable, if you happen to add/subtract program lines to the assembly). The way that it appears to be fetching them is that the program checks the bits of that variable to determine if the piece should be on-screen and then "builds" the address that it needs to load from. At least that is how it looks to be doing it. I was about to lose it (*see "help"), so it's beyond my scope to try to alter that. Quote Link to comment Share on other sites More sharing options...
Nukey Shay Posted January 7, 2004 Share Posted January 7, 2004 Color table of the phone pieces (follows the same scrambled pattern): .byte %11111110; $fe; |XXXXXXX | $fec6 pc1 .byte %11111010; $fa; |XXXXX X | $fec7 pc3 .byte %11110110; $f6; |XXXX XX | $fec8 pc5 .byte %11110100; $f4; |XXXX X | $fec9 pc7 .byte %11110010; $f2; |XXXX X | $feca pc9 .byte %11111100; $fc; |XXXXXX | $fecb pc2 .byte %11111000; $f8; |XXXXX | $fecc pc4 .byte %11100110; $e6; |XXX XX | $fecd pc6 .byte %11100100; $e4; |XXX X | $fece pc8 .byte %11100010; $e2; |XXX X | $fecf pc10 Color table of the flower (each byte=2 scanlines)...not scrambled .byte %11111110; $fe; |XXXXXXX | $f9f6 fc1/2 .byte %11111110; $fe; |XXXXXXX | $f9f7 fc 3/4 .byte %11111100; $fc; |XXXXXX | $f9f8 fc 5/6 .byte %01001010; $4a; | X X X | $f9f9 fc7/8 .byte %01001000; $48; | X X | $f9fa fc9/10 .byte %01000110; $46; | X XX | $f9fb fc11/12 .byte %01000100; $44; | X X | $f9fc fc13,14 Quote Link to comment Share on other sites More sharing options...
StanJr Posted January 7, 2004 Author Share Posted January 7, 2004 Ok, so using the addresses in the Disassembly I can located the corresponding addresses in HOM, but I have to enter the new values scrambled. That sounds simple enough. And thanks for the color table! Quote Link to comment Share on other sites More sharing options...
Nukey Shay Posted January 7, 2004 Share Posted January 7, 2004 Color tables for Elliot and the other humans can be found just below each group of bitmap frames (dunno why there are two Elliots). A color table for the ship is just below that sprite bitmap. ET is just monocolored, so I didn't find that one yet. Probably hard-coded into the routine that displays him, since it's just one shade. Search for a value being saved to the player color that is loaded as an immediate (#) value. That should go for the icons and other single-color objects too...I think. Quote Link to comment Share on other sites More sharing options...
Csonicgo Posted January 8, 2004 Share Posted January 8, 2004 I wonder why HSW did that? Quote Link to comment Share on other sites More sharing options...
Nukey Shay Posted January 8, 2004 Share Posted January 8, 2004 Could be a number of reasons. I think the most likely one is that it's an easy way to conserve ram (i.e. a single bit in a single ram location determines if that piece is already held PLUS that bit assists in locating the data in rom to display). Though I'm not positive about that...I'm no wizard when it comes to decyphering programs Quote Link to comment Share on other sites More sharing options...
StanJr Posted January 8, 2004 Author Share Posted January 8, 2004 Color tables for Elliot and the other humans can be found just below each group of bitmap frames (dunno why there are two Elliots). yeah, I found that out entirely by accident! I'm not sure about the two Elliots either, but if you alter either one it has an effect on the Elliot graphic generated. I also fail to see the need for 2 separate sequences for ET's neck raising (eye open, and eye closed) or why the scientist needs 10 different walk animations while the FBI agent only gets 8. This whole code is screwy. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.