Jump to content

decle

Members
  • Posts

    369
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by decle

  1. Very good, well crafted, piece of fun / marketing. Congratulations to all involved. The game looks very impressive too.
  2. Hey, I'd interested to know about the hardware and software used in the development process. What hardware was the software written on? What were the tools like, editors, assemblers etc? How was the code tested? Did they have access to Magnus boards or Black Whale keyboard components? Was there much communication or transfer of knowledge with the developers in California? cheers decle
  3. Hi ED. Stumbled across this yesterday. I would be interested seeing more details of the programming cart, if you could make it available. I cannot find references to either it, or the newsletter elsewhere on the web. Thanks decle
  4. Hey Paul, Just wanted to say many thanks for the Unisonic blog and RetroChallenge entry. I enjoyed following it greatly and it was the inspiration for my toying around with Li'l Bro. Prior to finding the Unisonic ROMs online I was considering using your reimplementation as the basis of Li'l Bro. I think your approach of implementing a VM to overcome the shortcomings of the Unisonic architecture is insane and brilliant. Kudos I'm looking forward to following your next RetroChallenge adventure in a couple of weeks. decle
  5. Apologies, I did not make the connection. And thanks for that work and post. It was very useful recently when writing the sound for my SFMT emulator for the Intellivision.
  6. Very cool. I like the use of higher tones in the sound to get some character into the voice. As DZ-Jay suggests it is possible to generate low quality PCM sound by setting up a low frequency sound and then banging the volume register to modulate the resulting signal. The technique is described here: http://map.grauw.nl/articles/psg_sample.php As you say it requires significantly more processing than this ISR based approach, but this does work and is correctly modelled by Jzintv.
  7. Ahh, I get it. Man I'm dozy at times. No change from normal there. I think I was confused by the default Jzintv mapping of keypad and action buttons, because I typically develop and play on a laptop keyboard, doh! Thanks for putting me straight.
  8. No problem, the description was good enough, sound was produced. And when it comes down to it that is the bar, at least in my book. My assumption is that $1FF / left is "player 1". So in a two player game I would only listen to the left controller when receiving input for player 1 and vice versa. However, judging by the controller configuration the assumption in MESS seems to be that the right hand controller is player 1. On reflection Jzintv also provides the same hint in that it defaults to a keyboard mapping that places the right hand controller onto the obvious keys (0-9 for the keypad for example). I must check out a few 2 player Mattel games and see what their assumptions are, but I'm guessing that Jzintv and MESS are this way round exactly because games make this assumption. In Li'l Bro I think I have an excuse in that I believe the Unisonic maps the left controller to player 1, so I'm just "being authentic" , but in future it is something I should bear in mind.
  9. Cool, should the original description b5 Amplitude Mode (0: fixed, 1: envelope-variable) b4-b0 4-bit fixed amplitude level actually have been: b4 Amplitude Mode (0: fixed, 1: envelope-variable) b3-b0 4-bit fixed amplitude level that is what I assumed, and it seemed to work (barring the additional bit 5). And that was the problem. Here is a patched code that has sound in MESS, and louder sound in Jzintv. lilBro.rom Thanks Joe Something else I have noticed fiddling with MESS. I had always assumed that player 1 was the left hand controller, and player 2 the right. Have I had things back to front all this time?
  10. Ahh, cool, cool, cool. Thanks Joe. I'll take a look. I did notice that the sound was rather quiet, I assumed it was the triangle envelope I was using to get the warble effect, as it did not seem to be quiet without the envelope. I tried to get round this by using multiple channels which helped a bit. However, your description highlights a different cause of the same symptom. I think I was working from the description of the amplitude control registers in: view-source:http://spatula-city.org/~im14u2c/intv/jzintv-1.0-beta3/doc/programming/psg.txt and I got confused. decle
  11. Yup, as you say much of the code in Li'l Bro is straight from the original ROM. My basic approach was to disassemble the original. Put an INTV bootstrap on the front and a simple ISR to keep the screen active and then repeatedly document the next block of Unisonic assembly, tweak where required, run it and debug. Keep going until done. If I can find the motivation to tidy the source of Li'l Bro to a point where I'm not embarrassed by it I'll release it. As you say most of it is not mine to keep anyway. Although I would not advise people to use it for anything other than "for interest" purposes. Yes, I've seen Michael's work. A real labour of love, if such a thing is possible for a Microsoft product
  12. No problem, no offence taken. I agree that people come to the "scene" for all sorts of reasons, it is one of the cool aspects of it. In many respects I think the work of Paul Robson back in 2012 is the kind of reimplementation of the original games that you suggest, and his technique of using the VM to get around the annoyances of the Unisonic was inspired. I can't compete with work like that To be honest I think the games only work within the confines of the Unisonic. For example Poker and Blackjack on the INTV is far superior to the Unisonic version, as such this only really works as an engineering exercise. At least in my head. I think it probably is interesting to see what could have been written for the Unisonic, perhaps a snake type game as Carlsson suggested. As Paul Robson has shown it is possible to use the SDK1600 toolchain to do such development and it is now possible to use MESS as a test platform. However, I have something else in mind for my next big project.
  13. Ahh, interesting. Yes, if I use the intv driver in MESS: mess64 intv -cart lilBro.rom I don't get any sound either, but I do get sound for other games. Weird that I get sound when I use Jzintv. Obviously I'm doing something wrong. I'll have to take a look at that. Thanks for the bug report. decle
  14. Nope, absolutely no point, but since when have we allowed that to stop us? I think you can play all the games on MAME / MESS right now if you want, using the unichamp driver and optionally the -cart flag to specify one of the pacs. The reason I converted the original ROM is because I was intrigued by Sly DC's description of the Unisonic as the Intellivision's little brother. I wondered how different the architecture was and it seemed to me that it would be possible to create an authentic experience on the Intellivision. As you might have guessed by now, I enjoy emulators, simulators and the like. In doing this I wanted to see if a vanilla Intellivision game (like the early APh games) could mimic the Unisonic. There are some differences, for example the characters are 6x8 pixels on the left side of the screen and effectively 9x8 on the right, so Li'l Bro's font is not spaced out quite right, but it is not bad. It does run and play the game, using only the resources of an unexpanded Intellivision (the complete game is <4K words like an original APh title). I had a similar objective for Nybl, which also does not use additional RAM and despite the liberal use of ROM to get performance to an acceptable level weighs in at <16K words. I think it is definitely simpler to convert the existing code, than write an equivalent from scratch. The process is mainly one of remapping addresses, data values and registers. However, it is not the most interesting programming exercise, and while some bits of it could be automated, there are some bits that could be difficult. For example there are some places where screen addresses are stored in memory. On the Unisonic the BackTab runs from $00 to $95, so obviously you have to shift any references up to $200 - $2F0, and sort out the left / right hand screen thing (that is really just maths). However, the Unisonic's RAM is only 8 bit. So you cannot store Intellivision screen addresses directly in it (I naively mapped the Unisonic RAM into the Intellivision scratch RAM), at which point you need to tweak the results when you read them back. If I was doing this again I think I'd simplify things by adding 256 words of 16 bit RAM, but as I said at the time I wanted to see if I could get a vanilla Intellivision to simulate the Unisonic.
  15. Hi Sly DC There should be some suitably authentic and annoying sound when playing Li'l Bro. Which emulator are you using, and on which platform (Windows, Mac, Linux)? Are other people getting sound? cheers decle
  16. Add on wise, what did you have in mind? The person responsible for the ROM dumps is David Viens aka plgDavid. All hat tips should be directed to him
  17. Hey, pac-01 is combined with the EXEC within the machine itself. The resulting 2K image is called 9501-01009.u2 and can be found within unichamp.zip provided by slydc. I believe this is the only ROM required to play the unichamp MESS driver in its basic form, certainly I've had MESS running with just this ROM. I've not tried the pac-02 through pac-05 ROMs in MESS yet, but I see no reason why they would not work David Viens seems to have done a great job dumping them.
  18. I contacted slydc, the maintainer of the Unisonic FAQ and poster of the original Unisonic thread in the main Intellivision forum, asking if he might have access to the additional cartridge ROMs. He does and he very kindly pointed me to them here: https://archive.org/download/unichamp/unichamp.zip They are part of a larger collection of Unisonic material (https://archive.org/download/unichamp) he contributed to archive.org. Very cool! A quick download and disassemble later. Joe is correct about the use of the MVI@ R5, R0 instruction at $0CEE, just before ScrPrintCard. This entry point is used several times by pac-04 (and only pac-04). The mystery around the full meaning of $00E6 (game type) remains. It does not look as though HandEnd (or any other address greater than $0FA0) is called directly from any of the other cartridges. Meaning that the block of code MVI Usc.gameType, R2 ; load game type SARC R2, 2 ; BNOV @@done ; if ???, goto done (can someone explain to me how to space the code blocks out a little bit, so that my text does not run right next to them, blank lines don't seem to work?) is probably only used by the EXEC / pac-01 (I have not ruled out indirect calls from computed targets, but this seems unlikely), and therefore, there is an expectation that under some circumstances bit 1 of game type is not 1. pac-03, pac-04 and pac-05 make use of $00E6. It looks as though pac-03 and pac-04 set it to 0 and expect it to have values up to at least 2. The use in pac-05 looks to be rather different, but I've not had a chance to really look at it. And of course the elephant in the room. There are now 4 more cartridge ROM images that could be converted to the Intellivision. If you are tempted, I'd happily explain the approach I used and how the problems caused by differences in the Unisonic and Intellivision can be overcome. However, you should know that converting a ROM in this way is an exercise in patience.
  19. Yup, Paul's work was absolutely awesome. I don't think his ROMs will be anything like the originals as if I understand correctly he did something way more bonkers and clever. According to his post here http://worstconsole.blogspot.co.uk/2013/01/day-24-not-much-game-development-cont.html He designed and then implemented a RISC virtual machine in CP1610 machine code, ran that within a Unisonic emulator and then wrote his version of the EXEC and game code in RISC machine code. A totally insane, wonderfully convoluted and utterly brilliant solution.
  20. Agreed, however, I cannot see obvious evidence either in the source, or when using a memory watch in Jzintv, that the game type is changed from its initial value of 2 or 3. Which would suggest that the overflow flag is always set to 1. There is a suggestion that the code is expecting a different value, as within HandEnd the overflow is checked: MVI Usc.gameType, R2 ; load game type SARC R2, 2 ; BNOV @@done ; if ???, goto done I guess a possible reason is that this is another example of the cartridges using additional functionality. I believe the ROM within the console was described as being both an EXEC and PAC-01 (the first game cartridge). So perhaps HandEnd is intended to be one of the reusable services. That said it all seems to work
  21. Ahh OK, yes that makes sense. Unfortunately I don't have access to the cartridges, so I cannot check. Kudos for finding that little comment amongst the 1000+ lines as well. The other thing I have not fathomed is the full meaning of game type. Blackjack is 3 and Bacarat is 2. There are then tests for the game type: MVI Usc.gameType, R0 ; check for bacarat SARC R0 ; BNC NoDouble ; if bacarat, goto NoDouble However, occasionally you see SARC R#, 2: MVI Usc.gameType, R0 ; check for ??? SARC R0, 2 ; BNC @@bacarat ; if ???, don't offer double I can't see any particular reason for doing this. The distinguishing bit 0 still ends up in Carry. Am I missing something subtle? decle
  22. Yup, that's what it is up to. The other interesting tweak is that the Unisonic does not make use of a stack, because it only has 8 bit RAM. As a consequence there are limits to the number of levels of subroutines in the code, and it makes use of R6 as a general purpose register. Obviously this requires a bit of register renaming to get things to work on the INTV. On the off chance you are interested, here is the disassembly of the original ROM with my annotations: original.asm
  23. Hey all, I thought this might be of interest to the wider group. Following requests to "go make a game", my next project happens to be a game... well, kind of. I have ported the code that runs the Unisonic Champion to the Intellivision. You can download a ROM for "Li'l Bro", a Unisonic Champion Simulator for the Intellivision and read all about it here on the programming forum: http://atariage.com/forums/topic/253252-lil-bro-a-unisonic-champion-simulator-for-the-intv/ decle
  24. Hey all, This is a bit of a quickie project in between bigger things. Last year David Viens dumped the ROM in the Unisonic Champion and its cartridges: http://forums.bannister.org/ubbthreads.php?ubb=showflat&Number=95976 And subsequently it has made its way into MESS as the "unichamp" driver. Armed with the system ROM image, and GI datasheets I thought it should be possible to get the Intellivision to mimic its little brother. How hard could it be? The result is "Li'l Bro", a Unisonic Champion simulator for the Intellivision. It can be played on JzIntv or other emulator using this ROM image: lilBro.rom I should warn you that the Unisonic is utterly underwhelming and is a serious contender for the title "Worst Console Ever", as described by Paul Robson: http://worstconsole.blogspot.co.uk/2012/12/the-worstconsoleever.html Li'l Bro only plays the card games Blackjack and Bacarat that were built into the console at the moment. This is because it was the only ROM I could find; it is mind bendingly boring to convert the games, and the end result, while technically interesting, is no fun to play. To play the ROM each player has only 2 controls. "Yes" is mapped to controller keypad buttons 1, 2 or 3 on the each controller and "No" to buttons 7, 8 and 9. If you are playing on Jzintv with a qwerty keyboard I recommend the following keyboard hack file, this saves having to switch backward and forward between keyboard maps. This maps: Left controller "yes" -> q, w or e Left controller "no" -> z, x or c Right controller "yes" -> y, u, i or o Right controller "no" -> b, n, m or comma kbd.txt Unlike my previous project, Li'l Bro is not an emulator. Although the majority of the code being run is the same as that in the Unisonic Champion, it has been tweaked to take account of the different architecture and memory map in the Intellivision. So, technically Li'l Bro is a simulation, rather than an emulation. That said, I think it is pretty faithful to the original. You can see a video of a real Unisonic being played here: As always, all feedback, good, bad and indifferent is most welcome. Enjoy! (you probably won't, but at least the sentiment is there). decle
  25. As always, excellent insight Joe. Very informative. Thanks
×
×
  • Create New...