slydc Posted August 21, 2021 Share Posted August 21, 2021 Hi folks! I just made a Channel F binary called "Hello World!" and tested it with the online PICO-8/CH-F emulator and it works but it is very slow. Can someone here can test it out on a real console to see if it works and how slow/fast it displays, etc.. ? I have a Channel F II console but no Multi-Cart or a cart with interchangeable EPROM (or even a Flash cart). So anyone up to it ? Thanks in advanced! ? - Sly - hello-world.bin Quote Link to comment Share on other sites More sharing options...
e5frog Posted August 21, 2021 Share Posted August 21, 2021 (edited) MAME/MESS does an excellent job, only differences are that it doesn't cause graphic errors if there's no delay in the plotting routine and the sound emulation isn't entirely accurate. Works perfectly for this kind of tests. @slydc It's the slowest thing I have ever seen drawn on Channel F... Share the code and I'll tell you what's wrong. This code would generate the image in a second, with the graphics data added of course. Edited August 21, 2021 by e5frog Quote Link to comment Share on other sites More sharing options...
e5frog Posted August 21, 2021 Share Posted August 21, 2021 ... well, two seconds with a "bios" screen clear included. Hello.zip 1 Quote Link to comment Share on other sites More sharing options...
slydc Posted August 22, 2021 Share Posted August 22, 2021 WOW!!! I am impressed!! You just took the BMP picture and displayed it in sssooo much less time and it is also centered! But all the data before the BMP picture was in fact an interpreter...a CHIP-8 interpreter (or an Chip-8 emulator) which is done by Tobias V. Langhoff, which he calls it: Chip-F8. You can get the ASM file with a single chip8 file here: https://github.com/tobiasvl/chip-f8 But seems that it's not finished as i have compiled the "Pong 1-player.ch8" game and it displays but can't get to start the game or move the paddle. This would be so great to see an "working" Chip-8 interpreter for the Channel F and this would enlarged the game library by over 200 games...yes...200 Chip-8 Games! But not all can be adapted... I have a repertory of almost all Chip-8 games, programs, demos (the "Hello World" is one of them - see my attempt here on a RCA Studio II: https://www.youtube.com/watch?v=4pjBislnQm4 ) and also Super Chip-8, XO-Chip, etc) here: https://archive.org/details/chip-8-games Maybe one day we could even see Super Chip-8 games on the Channel F as it can display 128x64 like the Super Chip-8 ? Mapping the 16 hex buttons of the RCA Cosmac VIP would be easy in a way since the Channel F uses hand controller which acts like 2 joystick in one, meaning: Forward (Up), Backward (Down), Left, Right, CW, CCW, Pull-Up and Push-Down. So 8 contacts (or buttons) and 8 more with the handle #2 so 8+8 = 16. We could connect a hex-pad to port #1 and #2 easily ( and would somehow like the unreleased Keyboard (K-1)). Of course, that's all a thought as i'm no programmer (except BASIC & LUA) but some of you here has already the know-how to program on the Channel F (and clones). Would this be a fun project to do ? - Sly - chip-f8 (Pong 1player).bin Quote Link to comment Share on other sites More sharing options...
e5frog Posted August 22, 2021 Share Posted August 22, 2021 (edited) No, I took a screenshot, used the allblit-converter for the data and stuffed it with the blit routine available from my homepage (channelf.se). So... it won't get a whole lot faster than that. Maybe stealing the bitmap from the bin would have been a faster way to make it... Pretty cool to have a "Chip-8" (whatever that is) emulation/interpreter for the Channel F. This command mentioned on GitHub works on old versions of mess: "messd channelf -cartridge chip-f8.bin -w -effect sharp -r 640x480 -ka", not sure how much of those settings are still available. Currently the latest version is in MAME (not that much has happened to the emulation itself). There's a build called MESSUI that I prefer myself, they messed stuff up in the latest versions so I'm not too keen on the newest ones and my complaints about it may or may not be heard (I might have needed to be more diplomatic about it). Seems it could be fun to look into this, biggest Achilles heal for the Channel F is the slow graphics update, if adding a graphics buffer in RAM and having that written and read as will slow things even more (if it's not ever read it needs no buffer) so if those routines could be sped up it might improve things. Not sure how that could be done, using a second buffer to compare to and only plot the difference would be slow as well. Screenbuffer could be compared with a second buffer, keep a row and column counter, check for changes with XOR and plot a byte if there's a change in it. lm xdc xm - plot byte if needed xdc - update row/column - repeat until all 256 bytes are done - Copy buffer 1 to buffer 2, unless updating inside the drawing routine No, 128x64 is not available, there's that much VRAM you can write to, two columns are used to set the palette and only about 102x58 pixels are visible in MAME/MESS, a real setup may show more or less and have different centering. Yes a four button pad with a steering cross is a good option, on a Channel F II/Adman Grandstand/Luxor VEC/Normende, the earlier one(s) needs some modding as controllers are internally connected. Edited August 22, 2021 by e5frog Quote Link to comment Share on other sites More sharing options...
e5frog Posted August 22, 2021 Share Posted August 22, 2021 (edited) I did some minor changes to speed it up a little - still terribly slow though - as expected when redrawing the whole screen every time. I haven't dived in to the code very deep it seems the capabilities of the F8 could be used a little better. The instruction for drawing (DXYN) could probably be faster. BTW, if skipping instruction 9XY* not ending with 0 the Hello World code seems to bug out - could be because of something else, not sure. Not sure why no ball is coming in Pong but I noticed the random function is not implemented, it just outputs the NN value loaded in the instruction (as 6XNN function instead of CXNN). There's no key check at all, so even if the ball was moving, movement wouldn't be possible. I wonder which controller directions will be best suited. firstDigitE: lr a, 2 xi $9e bnz .ex9e lr a, 2 xi $a1 bnz .exa1 jmp fetchDecodeLoop .ex9e: jmp fetchDecodeLoop .exa1: lr dc, h lm lm lr h, dc jmp fetchDecodeLoop Chip-8_ed.zip Edited August 22, 2021 by e5frog Quote Link to comment Share on other sites More sharing options...
slydc Posted August 24, 2021 Share Posted August 24, 2021 On 8/22/2021 at 12:54 PM, e5frog said: No, I took a screenshot, used the allblit-converter for the data and stuffed it with the blit routine available from my homepage (channelf.se). So... it won't get a whole lot faster than that. Maybe stealing the bitmap from the bin would have been a faster way to make it... ## Ah! I was wondering how the heck you achieved that! Have to check that out... Pretty cool to have a "Chip-8" (whatever that is) emulation/interpreter for the Channel F. ## Well Chip-8 has came out in 1977 with the RCA Cosmac VIP, after it was adapted in 1990 for TI calculators and in the same time, Super ## Chip-8 was developed. And now, it has been adapted to so many game consoles. other OS, platforms, etc..(now even for the Channel F). This command mentioned on GitHub works on old versions of mess: "messd channelf -cartridge chip-f8.bin -w -effect sharp -r 640x480 -ka", not sure how much of those settings are still available. Currently the latest version is in MAME (not that much has happened to the emulation itself). There's a build called MESSUI that I prefer myself, they messed stuff up in the latest versions so I'm not too keen on the newest ones and my complaints about it may or may not be heard (I might have needed to be more diplomatic about it). ## I don't even use those commands, just downloaded the last version + the MESSUI and it works without problems. I think it's still a bad decision ## to put MESS and MAME together, i like when they were both separated (sigh!). Seems it could be fun to look into this, biggest Achilles heal for the Channel F is the slow graphics update, if adding a graphics buffer in RAM and having that written and read as will slow things even more (if it's not ever read it needs no buffer) so if those routines could be sped up it might improve things. Not sure how that could be done, using a second buffer to compare to and only plot the difference would be slow as well. Screenbuffer could be compared with a second buffer, keep a row and column counter, check for changes with XOR and plot a byte if there's a change in it. lm xdc xm - plot byte if needed xdc - update row/column - repeat until all 256 bytes are done - Copy buffer 1 to buffer 2, unless updating inside the drawing routine ## I know that Chip-8 is 512 bytes and it draws pixel by pixel (64x32) and the maximum it can goes is 4Kb. The best is to contact Tobias (the author ## of Chip-F8) has he done he's own interpreter for PC and a few games and demos. Also, you should take a look at this web page: ## https://multigesture.net/articles/how-to-write-an-emulator-chip-8-interpreter/ On 8/22/2021 at 12:54 PM, e5frog said: No, 128x64 is not available, there's that much VRAM you can write to, two columns are used to set the palette and only about 102x58 pixels are visible in MAME/MESS, a real setup may show more or less and have different centering. ## No problem, only Chip-8 then! Yes a four button pad with a steering cross is a good option, on a Channel F II/Adman Grandstand/Luxor VEC/Normende, the earlier one(s) needs some modding as controllers are internally connected. ## Already thought of that to replace the hand controllers, something like a NES controller. Quote Link to comment Share on other sites More sharing options...
slydc Posted August 24, 2021 Share Posted August 24, 2021 On 8/22/2021 at 6:30 PM, e5frog said: I did some minor changes to speed it up a little - still terribly slow though - as expected when redrawing the whole screen every time. I haven't dived in to the code very deep it seems the capabilities of the F8 could be used a little better. The instruction for drawing (DXYN) could probably be faster. BTW, if skipping instruction 9XY* not ending with 0 the Hello World code seems to bug out - could be because of something else, not sure. Not sure why no ball is coming in Pong but I noticed the random function is not implemented, it just outputs the NN value loaded in the instruction (as 6XNN function instead of CXNN). There's no key check at all, so even if the ball was moving, movement wouldn't be possible. I wonder which controller directions will be best suited. firstDigitE: lr a, 2 xi $9e bnz .ex9e lr a, 2 xi $a1 bnz .exa1 jmp fetchDecodeLoop .ex9e: jmp fetchDecodeLoop .exa1: lr dc, h lm lm lr h, dc jmp fetchDecodeLoop Cool!! I knew that this interpreter could be something fun to add to a real Channel F, but all those codes is gibberish to me (sorry!) And that's whit i thought, i tried anything to move a paddle (the other is controlled by the program) and nothing moves, not even the ball as if it's waiting for a code (or button) to start. I see that you tinkered with it, i'll check it out ASAP. Thanks very much! On 8/22/2021 at 6:30 PM, e5frog said: Chip-8_ed.zip 9.58 kB · 1 download Quote Link to comment Share on other sites More sharing options...
slydc Posted August 24, 2021 Share Posted August 24, 2021 Oh...almost forgot, many Chip-8 games uses the key #2 for UP, Key #4 for LEFT, Key #6 for RIGHT, Key #8 for DOWN and Key #5 for FIRE/ACTION. But for the Pong 1-player game, you control the left paddle with Key#1 (UP) and Key#4 (DOWN) and the ball starts automatically. Quote Link to comment Share on other sites More sharing options...
e5frog Posted August 30, 2021 Share Posted August 30, 2021 It's now playing a version of Pong (incredibly slow). If set to 1000% speed and Auto skip in MESS - it still runs slow (on my PC). The Unlimited option is not the fastest, curiously enough. The timer delay wasn't implemented, which is why Pong didn't start at all. Chip-8_ed3.zip Quote Link to comment Share on other sites More sharing options...
e5frog Posted September 4, 2021 Share Posted September 4, 2021 I got the KeyTest-program working as well. No big leaps in speed increase. Chip-8_ed7.zip Quote Link to comment Share on other sites More sharing options...
slydc Posted September 15, 2021 Share Posted September 15, 2021 Hi! Sorry for the very late come back. I've tested both edition (ed3 & ed7) and boy that you were right. Speed is awfully slow in the edition#3. Is it the same speed in MESS and on a real Chanel F ? As for edition #7, the hexpad 7 and D uses the same button (W) and is missing the hexpad C & E (tried many keyboard buttons, couldn't find any assigned to). If the speed is the same in MESS and on a real channel F then it was worth the try. Quote Link to comment Share on other sites More sharing options...
e5frog Posted September 15, 2021 Share Posted September 15, 2021 I have gotten the speed up by drawing only the two bytes that changes after each row of sprite plot (as originally mentioned in the code). Have made some glitches as well that I need to work out to keep the speed up. Got Pong to play nicely. I have a table with the key mapping in the code, for custom setting. To have 16 buttons, both controllers are used once for each switch. Emulation will allow any setup you want (MESS tends to crash when I do that). A problem I noticed is that it's supposed to have 16 levels of stack - which it doesn't, since it doesn't have room for that in the registers. It will need a rewrite to use RAM instead/also. There's different information regarding objects being outside of the screen, should they wrap or not... Not sure which one to follow. Will upload again when graphics is figured out. Quote Link to comment Share on other sites More sharing options...
e5frog Posted September 16, 2021 Share Posted September 16, 2021 Here's the faster version. Chip-8_ed9.zip Quote Link to comment Share on other sites More sharing options...
e5frog Posted September 16, 2021 Share Posted September 16, 2021 ... I mapped all the keys in the latest MESSUI 0.235 (press TAB then Input this machine), in the current setup in code, if using 1,2,3,4 x 1,Q,A,Z for keyboard: P1 Up 2 P1 Down S P1 Left Q P1 Right E P1 Push Down W P1 Pull Up A P1 Twist Clockwise 3 P1 Twist Counterclockwise 1 P2 Up 4 P2 Down C P2 Left Z P2 Right D P2 Push Down V P2 Pull Up X P2 Twist Clockwise F P2 Twist Counterclockwise R HOLD 6 MODE 7 START 8 TIME 5 Keytest functions properly. Quote Link to comment Share on other sites More sharing options...
+jgkspsx Posted September 25, 2021 Share Posted September 25, 2021 Well, I scored a supposedly working Channel F with Video Whizball, Alien Invasion, Hangman, Pinball, some more common carts and their manuals, for a relatively justifiable price. And two large lots for good prices. And I got my multicart from @e5frog! As soon as I get my CRT alive again, I will be in business! 2 Quote Link to comment Share on other sites More sharing options...
+jgkspsx Posted September 27, 2021 Share Posted September 27, 2021 I was afraid I was going to be underwhelmed, but if anything I was surprised by how much I enjoyed everything! I had all the usual Channel F owner confusion (why is there so much audio noise on the TV? what buttons do I need to hit in what order?) but eventually it all came back to me and I remembered all the old tricks again. I played a lot of built-in hockey, Video Whizball, Alien Invasion, Pinball Challenge, Pac Man, and Tetris. It is truly amazing what @e5frog and the rest of the Channel F community have achieved on it, and I really wish it were easier to come by consoles so more people could experience their work with the real controller. I have to say, Pinball Challenge gets beat up on a lot, and I don’t love the way the paddle slows down when the CPU is catching up, but I LOVE the notches on the side and generally had a terrific time with it. I have been playing a lot of Atari 2600 lately, and I have to say that the Channel F’s visual presentation, while less sophisticated in many ways, really makes a sharp, clean, consistent impression that is pretty unrivaled in my experience. Not many colors, but they’re such nice colors! 2 Quote Link to comment Share on other sites More sharing options...
Hwlngmad Posted September 27, 2021 Share Posted September 27, 2021 8 hours ago, jgkspsx said: I was afraid I was going to be underwhelmed, but if anything I was surprised by how much I enjoyed everything! I had all the usual Channel F owner confusion (why is there so much audio noise on the TV? what buttons do I need to hit in what order?) but eventually it all came back to me and I remembered all the old tricks again. I played a lot of built-in hockey, Video Whizball, Alien Invasion, Pinball Challenge, Pac Man, and Tetris. It is truly amazing what @e5frog and the rest of the Channel F community have achieved on it, and I really wish it were easier to come by consoles so more people could experience their work with the real controller. I have to say, Pinball Challenge gets beat up on a lot, and I don’t love the way the paddle slows down when the CPU is catching up, but I LOVE the notches on the side and generally had a terrific time with it. I have been playing a lot of Atari 2600 lately, and I have to say that the Channel F’s visual presentation, while less sophisticated in many ways, really makes a sharp, clean, consistent impression that is pretty unrivaled in my experience. Not many colors, but they’re such nice colors! The Channel F is a fun little system. While a bit crude graphically, even compared to what the 2600 could do, it still has some very, cool games that are very much worth playing today. 3 Quote Link to comment Share on other sites More sharing options...
Mikebloke Posted October 5, 2021 Share Posted October 5, 2021 Finally have my first "playable" game for the Channel F - another exciting port for me haha! This is a port of the Tele-Spiel ES 2201 game: Ghostchaser. Very simple, when the square moves, you press the button. Press too early, you are blocked from moving, whoever presses first when the ghost moves wins the point. Use push down button on the controller to fire, button 4 on console is reset. My plan is to improve the timer a little so its not randomly selecting to fire straight away, and possibly a controller button reset (perhaps pull?) Once that is done, I want to add on-screen scoring for a bonus feature - I might also work on a colour version with alternative fire buttons required (twist left or right for different colours). The game Ghostchaser on original console is shown here from someones youtube channel (greatly appreciated by a fellow game-recorder of obscure consoles): Some more info on the console: https://www.old-computers.com/museum/computer.asp?st=2&c=664 It appears to be a half-way between an odyssey, playing very similar with only 3 on screen white elements on a black background, and a PC-50X which also uses full circuitry for each game (but runs in two-colour). GhostChaser.bin 1 Quote Link to comment Share on other sites More sharing options...
e5frog Posted October 5, 2021 Share Posted October 5, 2021 Nice! Didn't understand the gameplay, will check it out! 1 Quote Link to comment Share on other sites More sharing options...
Mikebloke Posted October 6, 2021 Share Posted October 6, 2021 7 hours ago, e5frog said: Nice! Didn't understand the gameplay, will check it out! When the square moves, press down, but don't press too early. That's it ? Its me testing a timer, I was struggling to work out how to delay so this was a good way of me getting something to work, the plan is to add it to the Simon game I'm still working on as I needed a way of showing all the combinations. 1 Quote Link to comment Share on other sites More sharing options...
Mikebloke Posted October 9, 2021 Share Posted October 9, 2021 Done some more work to it, probably as close as I want to get it to the original Tele-Spiel so this is version 1.0: What I've done since last time: 1) Limit of about 1 second to react to ghost moving before disappearing - this is based on the text of the manual (the video doesn't show what happens if you don't press the button - so I'm assuming) 2) Pull up on both controllers now resets the game so you don't have to press 4 on the console 3) I think I've now set it up so that if the random generator for the next level is never less than a second before the ghost moves.* The one thing that I haven't implemented from the video that I noticed, is that when someone "misfires" before the ghost moves, the other player should be prevented from also pressing - this is probably from the circuitry of the board - I could implement this but I think its more fun to allow the other player to score the point. I can add this in if anyone was desperate to have a true-to-Tele-Spiel experience. I think my next shot would be to work on the 2 other "unique" Tele-Spiel games. Skeet Shooting has some unique mechanics, and racing is possibly the first home console version of a vertical scrolling car game with a moving track (the PC 50X has a car game, but you avoid cars, rather than the road adjusting). I'm also formulating ideas for a potential "plus" version of this with some more strategy and gameplay. * F8 assembly question: In order to do this, I used xs (Exclusive OR from Scratchpad) but first I had to shift bits and then shift back again because xs apparently can't handle more than $F, is this correct? It seems to work fine, I was just surprised it only handled a single digit hexadecimal number. GhostChaserv1.bin 1 Quote Link to comment Share on other sites More sharing options...
e5frog Posted October 9, 2021 Share Posted October 9, 2021 53 minutes ago, Mikebloke said: * F8 assembly question: In order to do this, I used xs (Exclusive OR from Scratchpad) but first I had to shift bits and then shift back again because xs apparently can't handle more than $F, is this correct? It seems to work fine, I was just surprised it only handled a single digit hexadecimal number. xs "r" makes EXOR of all eight bits from what is in Ackumulator and the value in register "r". The op-code is $Ex, where x notes the register. You can only use register 0 to 11 directly... https://channelf.se/veswiki/index.php?title=Opcode xs 0 xs 1 ... xs 10 xs 11 xs 12 is the same as "xs S" xs 13 is the same as "xs I" xs 14 is the same as "xs D" hmmm.... can't remember what was the thing about 15. I recall checking this at one time or another, I should have added it to the Opcode page... 2 Quote Link to comment Share on other sites More sharing options...
slydc Posted October 16, 2021 Share Posted October 16, 2021 (edited) On 9/16/2021 at 11:22 AM, e5frog said: Here's the faster version. Chip-8_ed9.zip 13.99 kB · 12 downloads Sorry but i was just able to test it today and this is a heck of an improvement! There is a lot of flicker for the two bats in the Pong 1player game but that's ok. So, when we will see a multicart Chip8 for the Channel F ? Edited October 16, 2021 by slydc Quote Link to comment Share on other sites More sharing options...
+atari2600land Posted October 16, 2021 Author Share Posted October 16, 2021 Has anyone found the Easter egg in Trimerous yet? 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.