newcoleco Posted July 9, 2010 Share Posted July 9, 2010 (edited) Hello, * WARNING * - IT'S STILL BUGGY - TOO BAD! ** Happy birthday to all ColecoVision fans! ** I've decided to take a look at Destructor ROM file today and after 6 hours this is the result of patching the code and giving the option to play with a regular Coleco controller instead of the steering wheel. I know that some people asked for this kind of hack, and this is my response. Please note that this hack should be able to support joystick and steering wheel. And you can even use a SuperAction controller if you want. My Conditions I'm not gonna make cartridges of this game. Consider that you also don't have my aproval to publish this game into cartridges and to hack back the title screen of it. If you understand my conditions, you can proceed to download : ROM : dantructor.zip * FOR Z80 PROGRAMMERS * The hack is in 2 parts First - you can select the game difficulty seting with joystick in port #1, not only with joystick in port #2. Second - You play with the joystick in port #1, which emulates the steering wheel setup pretty well. But, I've decided to use the secondary fire button instead of pressing a key to shoot, which is more convenient. This hack is about replacing calls to $1FEB ( aka POLLER routine ) by appropriate routines that makes the calls but also override the resulting values $7014-$701F to simulate the effect of the steering wheel movements by the LEFT and RIGHT of joystick port #1, the move forward and backward also possible with joystick port #1, and making the secondary fire button on port #1 acting like a keypress on port #2. ;; Destructor joystick support hack ;; By Daniel Bienvenu ;; July 2010 ;; NOTE : ;; Add the following code to the end of the 32KB ROM ( filled with useless 0FFH anyway ) hack: push hl ld a, 00FH ld (0701FH),a call $1FEB ; POLLER with $7014 as BUFFER ;;; HACK PATCH JOYSTICK INPUT ld a,(07014H+5) or a jr z,hack_pass_shooting ld a,1 ld (0701FH),a hack_pass_shooting: ld a,(07014H+3) and 5 ld l,a ld a,(07014H+ or l ld (07014H+,a ld a,(07014H+3) ;;; SIMULATE STEERING WHEEL EFFECT WITH LEFT AND RIGHT bit 1,a jr nz, hack_right bit 3,a jr nz, hack_left jr hack_end hack_right: ld a,($716F) dec a jr hack_save hack_left: ld a,($716F) inc a hack_save: and 03Fh ld ($716F),a hack_end: pop hl ret hack_keypad: call $1FEB ld a,(07014H+6) cp 00CH ret nc ld (07014H+11),a ld a,00FH ld (07014H+6),a ret ;; Replace the call at the address $80B3 for " call hack_keypad " ;; Replace the call at the address $CCBC for " call hack_keypad " ;; Replace the first call to $1FEB from the routine started at $A6A3 for " call hack " ;; Enjoy! Edited July 9, 2010 by newcoleco 1 Quote Link to comment Share on other sites More sharing options...
retroillucid Posted July 9, 2010 Share Posted July 9, 2010 A big lot of thanks to you Daniel! That's very nice from you to share this! I'll play it more this weekend Quote Link to comment Share on other sites More sharing options...
retroillucid Posted July 9, 2010 Share Posted July 9, 2010 Was wondering.... Can this hack can be performed on Turbo ? Quote Link to comment Share on other sites More sharing options...
newcoleco Posted July 9, 2010 Author Share Posted July 9, 2010 (edited) Was wondering.... Can this hack can be performed on Turbo ? Well, I was about to make another thread for the Turbo hack. Same conditions apply : You enjoy the ROM file but no one is allowed to make cartridges of it. ROM : danielturbo.zip It seems that my hack for Turbo is less buggy, or even no bug at all, compared to Destructor. The hack (or patch if you prefer), is very similar. In fact, this time there is only one place where the POLLER routine is called (into the NMI routine), making it easier to edit this time. It took me only 2 hours because of my experience with Destructor. Edited July 9, 2010 by newcoleco 2 Quote Link to comment Share on other sites More sharing options...
retroillucid Posted July 9, 2010 Share Posted July 9, 2010 SO MUCH THANKS DANIEL !!! That's very well appreciated!! I'll test those roms deeper this weekend Quote Link to comment Share on other sites More sharing options...
Pixelboy Posted July 9, 2010 Share Posted July 9, 2010 Um, Daniel? You might want to have a look at this... Quote Link to comment Share on other sites More sharing options...
newcoleco Posted July 9, 2010 Author Share Posted July 9, 2010 Um, Daniel? You might want to have a look at this... I don't think I'll do the modifications suggested in your web page. I'm happy with the current controls and I did it for fun. But, good news, you can use my work as a clue to modify the game the way you want it. Have a nice day! Quote Link to comment Share on other sites More sharing options...
Pixelboy Posted July 9, 2010 Share Posted July 9, 2010 Um, Daniel? You might want to have a look at this... I don't think I'll do the modifications suggested in your web page. I'm happy with the current controls and I did it for fun. But, good news, you can use my work as a clue to modify the game the way you want it. Have a nice day! Okay, but you're the one who's cheating himself out of 250$US. Quote Link to comment Share on other sites More sharing options...
newcoleco Posted July 9, 2010 Author Share Posted July 9, 2010 What should I reply... Well, yes, I'm a fool. Maybe I should makes everyone pay for whatever I've done so far for Coleco fans. Because, after all, if you're good at something makes sure you can be paid for that. I've done this modification because I wanted to see if I can do it for these games based on the ColecoVision documentations and, obviously, I can. Destructor and Turbo are games that Coleco fans already have (or can have pretty easily). And these games are playable "as is", with a steering wheel of course, but it's playable. My work is not based on selling hacked rom files, it's based on having fun first, trying to do my own projects, and get the support of ColecoVision fans. Destructor is not my game, so I don't feel comfortable to sell it for such a small modification. It took me less time than writing music. Find someone else, or do it yourself! It's pretty easy when you figure it out. Quote Link to comment Share on other sites More sharing options...
retroillucid Posted July 9, 2010 Share Posted July 9, 2010 I'll try to make my own Turbo hack (based on yours) Do you think Slither could be hack in kind of same way? I think I'll give a try at it Quote Link to comment Share on other sites More sharing options...
newcoleco Posted July 9, 2010 Author Share Posted July 9, 2010 I'll try to make my own Turbo hack (based on yours) Great! Have fun doing it! Do you think Slither could be hack in kind of same way? I think I'll give a try at it Good question. Unfortunately, to give you the correct answer, I'll need to try it. Quote Link to comment Share on other sites More sharing options...
retroillucid Posted July 9, 2010 Share Posted July 9, 2010 I'll try to make my own Turbo hack (based on yours) Great! Have fun doing it! Do you think Slither could be hack in kind of same way? I think I'll give a try at it Good question. Unfortunately, to give you the correct answer, I'll need to try it. Thanks Daniel I wonder if playing Slither with regular controller could be great.... I do like to play it using the roller Controller, but those modules takes too much space at my place... That's why I do like those hacks Quote Link to comment Share on other sites More sharing options...
Murph74 Posted July 9, 2010 Share Posted July 9, 2010 Great work as usual, Daniel! Beau geste! Quote Link to comment Share on other sites More sharing options...
Pixelboy Posted July 9, 2010 Share Posted July 9, 2010 (edited) My work is not based on selling hacked rom files, it's based on having fun first, trying to do my own projects, and get the support of ColecoVision fans. Destructor is not my game, so I don't feel comfortable to sell it for such a small modification. It took me less time than writing music. Find someone else, or do it yourself! It's pretty easy when you figure it out. I'm sorry you feel that way, because as you know, I'm having my Team Pixelboy boxes reprinted this fall, and I could have had the Destructor SCE box done at the same time. I already have the european box of the game at home, so I can scan that box art at any time, and the manual could have been prepared relatively quickly as well. But oh well, it's no big deal. Releasing the game wasn't on my 2010 agenda anyhow (although it could have been, given the opportunity). Edited July 9, 2010 by Pixelboy Quote Link to comment Share on other sites More sharing options...
+Yurkie Posted July 9, 2010 Share Posted July 9, 2010 Awesome thank for sharing these hacks Daniel! Quote Link to comment Share on other sites More sharing options...
newcoleco Posted July 9, 2010 Author Share Posted July 9, 2010 (edited) I'm sorry you feel that way, because as you know, I'm having my Team Pixelboy boxes reprinted this fall, and I could have had the Destructor SCE box done at the same time. I already have the european box of the game at home, so I can scan that box art at any time, and the manual could have been prepared relatively quickly as well. But oh well, it's no big deal. Releasing the game wasn't on my 2010 agenda anyhow (although it could have been, given the opportunity). Being sorry regarding my convictions? Or because I'm not directly helping you? With the big clue I've posted here regarding my solution to patch this game, almost ANY z80 programmer can do the modifications you're asking for, even you can do it in a day. Use DASMx with this symbol file. Name this file the same as the rom file, except the extension should be ".SYM", and put it in the same directory, with the DASMx program. cpu z80 org 0x8000 byte 0x8000 Header 2 word 0x8002 Pointer 3 word 0x8008 PollerBuf 1 vectab 0x800a StartWhere code 0x800c Rst08 code 0x800f Rst10 code 0x8012 Rst18 code 0x8015 Rst20 code 0x8018 Rst28 code 0x801b Rst30 code 0x801e Rst38 code 0x8021 NMI Type (in DOS) : DASMx -w -a -t FILENAME.ROM Then open the resulting ASM file. Get rid of the bunch of "db 0FFH,0FFH,0FFH,..." lines at the end of the file. Change back false labels into hex values like "L0008" should be "00008H". Remark that "RST L0008H" should be something more like "RST 008H". Replace all RAM addresses identified with an X like "X7000", and change them back to something like this "$7000". When done, add the following lines at the top of your ASM file. FNAME "desct2.rom" CPU Z80 ; switch to Z80 mode ; BIOS CALLS L080B: EQU 0080BH ; PUT FRAME ( for complex image or to simulate sprites with characters ) L1F61: EQU 01F61H ; PLAY SONGS L1F79: EQU 01F79H ; DECODER ( INPUT H as port#, L as fire or not ; OUTPUT H as fire state, L as joystick or keyboard state, E as spinner L1F7F: EQU 01F7FH ; LOAD DEFAULT ASCII FONT PATTERN L1F82: EQU 01F82H ; FILL VRAM L1F88: EQU 01F88H ; UPDATE SPINNER L1FB8: EQU 01FB8H ; INIT TABLE L1FBB: EQU 01FBBH ; GET VRAM L1FBE: EQU 01FBEH ; PUT VRAM L1FC4: EQU 01FC4H ; WRITE SPRITE NAME TABLE L1FC7: EQU 01FC7H ; INIT TIMER L1FCD: EQU 01FCDH ; REQUEST SIGNAL L1FD0: EQU 01FD0H ; TEST SIGNAL L1FD3: EQU 01FD3H ; TIMER MANAGER L1FD9: EQU 01FD9H ; WRITE REGISTER L1FDC: EQU 01FDCH ; READ REGISTER L1FDF: EQU 01FDFH ; WRITE VIDEO RAM L1FE2: EQU 01FE2H ; READ VIDEO RAM L1FEB: EQU 01FEBH ; POLLER L1FEE: EQU 01FEEH ; SOUND INIT L1FF1: EQU 01FF1H ; PLAY SOUND L1FF4: EQU 01FF4H ; SOUND MANAGER L1FFD: EQU 01FFDH ; RANDOM Download and use TNIASM to compile the resulting asm file you just made. If there is any error, just fix it. Otherwise, you should get a valid ROM file named "desct2.rom" Congratulations, first step done! ... well, it's enough for begginers. A more serious z80 programmer will certainly put more time working into the symbols file for DASMx : adding up lines to identify each code sections, even those not discovered by the decompiler, and various other things. Test the new rom file, it should works fine. Now, time to patch the assembly code. Do as stated in my previous message here and you should get my hack done... and change only the routine to fit the configuration you want and there you go. That's it! It should takes you less than an hour! And please note that this little trick regarding DASMx and TNIASM works for many many commercial ColecoVision games, with a few minor changes here and there. Edited July 9, 2010 by newcoleco Quote Link to comment Share on other sites More sharing options...
Pixelboy Posted July 9, 2010 Share Posted July 9, 2010 Being sorry regarding my convictions? Or because I'm not directly helping you? Because I'm offering good money in exchange for a service, with full credit given where credit due. Gulkave, Girl's Garden and Pitfall II Arcade were ported upon such an arrangement, and I'm certainly not going to apologize for being a ColecoVision publisher. Quote Link to comment Share on other sites More sharing options...
newcoleco Posted July 10, 2010 Author Share Posted July 10, 2010 (edited) Because I'm offering good money in exchange for a service, with full credit given where credit due. Gulkave, Girl's Garden and Pitfall II Arcade were ported upon such an arrangement, and I'm certainly not going to apologize for being a ColecoVision publisher. Err... it's not my intention to ask you to apologize for anything. Publish all the games you want, these are great projects and should be released for the joy of the fans. My question now should be : Why suddently my question about why you feel sorry about my answer turned into this situation? I don't want you to change... specially because I'm not modifying a game as you proposed in your web site; it's ridiculous. Yes, I'm telling everyone here how I've proceeded so anybody (including you) can make similar modifications and even produce a ROM file that fits the specifications of your web site. This way, more sooner than later, you'll publish the game you want. Isn't that great? You know, part of the joy of any homebrew scene is to try modifying things that already exist to see how it works and what we can do. And that's what I did and I've shared the results with the fans, even with the "behind the scene" secrets on how I did it. Let me try to clarify my point of view. Again, it's not to prevent you to publish a hacked Destructor; you are a publisher, I understand that. See, if I've accepted your offer, then I'll have to accept a situation like someone doing a re-skin of Ghostblaster and sell it credited to his great hacking work. I'm sorry, I can't accept this situation regarding my games, so my feeling about not being comfortable to get money for hacking a game is a legitimate feeling. I don't feel guilty regarding the hack I've done to these games, that was pretty cool, but I don't want to make a benefit of it; it simply doesn't sound right to me. So, I'm sharing the result with you, with all the secrets, in the hope that someone will appreciate. And with all the secrets revealed, it may also help others to make even more cool hacks, which is pretty cool. Call it a stupid programmer ethic issue, but it's the way I feel about this situation and I don't see why you should feel sorry about it. Yes, I know, I should take the opportunity, it's $250 and I certainly need it, but I prefer to not get any money for a hack. IF YOU APPROVE THIS MESSAGE, PLEASE RATE IT (just kidding) Edited July 10, 2010 by newcoleco 4 Quote Link to comment Share on other sites More sharing options...
NIAD Posted July 10, 2010 Share Posted July 10, 2010 Daniel, Tremendous work on these two hacks and VERY MUCH APPRECIATED!! I never truly liked using the Steering Wheel with Destructor and I'm sure this is the reason why I didn't spend as much time with this game in my youth. Now thanks to your efforts and kindness in sharing this modified version with the community, I have the opportunity to re-explore this game. Jim Quote Link to comment Share on other sites More sharing options...
Nukey Shay Posted July 10, 2010 Share Posted July 10, 2010 Nice work Quote Link to comment Share on other sites More sharing options...
Pixelboy Posted July 10, 2010 Share Posted July 10, 2010 Because I'm offering good money in exchange for a service, with full credit given where credit due. Gulkave, Girl's Garden and Pitfall II Arcade were ported upon such an arrangement, and I'm certainly not going to apologize for being a ColecoVision publisher. Err... it's not my intention to ask you to apologize for anything. Publish all the games you want, these are great projects and should be released for the joy of the fans. My question now should be : Why suddently my question about why you feel sorry about my answer turned into this situation? Ah, okay, I see where the misunderstanding is. "I'm sorry you feel that way" is a common english expression, Daniel. It simply expresses disappointment. The word "sorry" in this expression doesn't carry a specific meaning. I don't want you to change... specially because I'm not modifying a game as you proposed in your web site; it's ridiculous. I just tried Dantructor with blueMSX. It works pretty well, I have to say, although I still have to try it on a real CV. As far as your hack is concerned, the only mod I would have suggested is to use the other fire button to toggle between reverse and foward gear. Yes, I'm telling everyone here how I've proceeded so anybody (including you) can make similar modifications and even produce a ROM file that fits the specifications of your web site. This way, more sooner than later, you'll publish the game you want. Isn't that great? Well, sure, it would be great... if I were a Z80 programmer. Which I'm not. Not yet anyway. Seriously, I can take every line of the code you posted in this thread, and say "Why do you do this? Why do you do that?" I'll have to learn this stuff if I want BasicVision to become reality, but I'm not there yet. Not by a long shot. Let me try to clarify my point of view. Again, it's not to prevent you to publish a hacked Destructor; you are a publisher, I understand that. See, if I've accepted your offer, then I'll have to accept a situation like someone doing a re-skin of Ghostblaster and sell it credited to his great hacking work. I'm sorry, I can't accept this situation regarding my games, so my feeling about not being comfortable to get money for hacking a game is a legitimate feeling. Okay, I can understand that. I'm not sure I can agree with it 100%, but I understand. I don't feel guilty regarding the hack I've done to these games, that was pretty cool, but I don't want to make a benefit of it; it simply doesn't sound right to me. So, I'm sharing the result with you, with all the secrets, in the hope that someone will appreciate. You know, dvik-&-joyrex didn't ask to get payed for their CV port of Peek-a-boo, aside from a free copy of the cart. They discarded the payment option because they wanted the game to be as cheap to buy as possible. That's why Peek-a-boo will have a lower pricetag than the other upcoming games I will offer. I could have done that with Destructor SCE too. You know I don't make a dime of profit from the sale of my Team Pixelboy titles in any case. I sell my games at cost. And with all the secrets revealed, it may also help others to make even more cool hacks, which is pretty cool. Would you mind if I added a link to this AA forum thread from my own web site, on the Destructor SCE page? Call it a stupid programmer ethic issue, but it's the way I feel about this situation and I don't see why you should feel sorry about it. Yes, I know, I should take the opportunity, it's $250 and I certainly need it, but I prefer to not get any money for a hack. Yeah, you could make money from Jewel Panic instead... (Okay, that was low. Sorry... ) Quote Link to comment Share on other sites More sharing options...
xybot67 Posted July 10, 2010 Share Posted July 10, 2010 Wow! This is great, thanks Daniel! I just tried Turbo and it worked like a charm. Quote Link to comment Share on other sites More sharing options...
Pixelboy Posted July 10, 2010 Share Posted July 10, 2010 I just tried Dantructor with blueMSX. It works pretty well, I have to say, although I still have to try it on a real CV. As far as your hack is concerned, the only mod I would have suggested is to use the other fire button to toggle between reverse and foward gear. Wait, forget it. I just realized that doesn't make any sense. You're already using one button for the pedal, and the other to fire crystals. I noticed that (under blueMSX) you can't return to foward gear after you've put the RamCar in reverse gear. Is that what you meant when you said the game is still buggy? Quote Link to comment Share on other sites More sharing options...
newcoleco Posted July 10, 2010 Author Share Posted July 10, 2010 I noticed that (under blueMSX) you can't return to foward gear after you've put the RamCar in reverse gear. Is that what you meant when you said the game is still buggy? Yes, it's a bug regarding the "debounce" the joystick input done by the BIOS Poller routine. I've fixed it later, but I didn't post it yet... because we are in a discussion and I can't edit my own messages in this forum, which is very annoying. Anyway, as for the ROM you have actually, you can "fix" the issue during the game by using the second controller like if it was set with the steering wheel. The bug is due to my wish to support both settings : steering wheel and joystick. Quote Link to comment Share on other sites More sharing options...
Pixelboy Posted July 10, 2010 Share Posted July 10, 2010 I noticed that (under blueMSX) you can't return to foward gear after you've put the RamCar in reverse gear. Is that what you meant when you said the game is still buggy? Yes, it's a bug regarding the "debounce" the joystick input done by the BIOS Poller routine. I've fixed it later, but I didn't post it yet... because we are in a discussion and I can't edit my own messages in this forum, which is very annoying. If I'm not mistaken, posts are editable without restriction in the Homebrew Discussion forum. Perhaps you can post the new ROM there, and place a link to this other thread here. Anyway, thanks for the info. 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.