TheFairChild Posted September 8 Share Posted September 8 Thanks! I found the .txt file after posting my comment actually, and I have been reading the veswiki since then (I find the actual details about the CPU quite interesting). I saw your name over there, quite an honor to have you answer my question Quote It's a black/white folder for a very uncommon cart, it would be unwise to scan it and put it out there for anyone to churn out prints from... Pardon me if this is a stupid question, but why would it be unwise? Are people really going to churn prints from it? What for? Wouldn't it be good to have it on archive.org (or the Facebook "Fairchild Channel F Fan Page") to make sure it is not lost from history? Quote Link to comment Share on other sites More sharing options...
e5frog Posted September 8 Share Posted September 8 2 hours ago, TheFairChild said: Pardon me if this is a stupid question, but why would it be unwise? Are people really going to churn prints from it? What for? I made the text file, feel free to scan your #19 instructions and upload them, should you ever find one. Quote Link to comment Share on other sites More sharing options...
Mikebloke Posted September 8 Share Posted September 8 Ah good old checkers, the game that probably broke the camels back and led me to full romcart and emulation 😂 the one that slipped away. On an update, I didn't get quite as much done over the summer break as I planned. This was largely down to Shapez 2 coming out and me perhaps playing a little bit more than I care to admit. What I do have mostly done is yet another game though, some nice person has been generously donating on itch and suggested another pc 50x port of Wipeout, which I did mostly do in two days. It has a simple breakout game with a 2 player Vs mode I still need to fix but all the "wipeout" variants were done pretty much straight away. So that'll be coming up on the horizon for anyone who got bored of hockey on the console chip. Quote Link to comment Share on other sites More sharing options...
+fdr4prez Posted September 9 Share Posted September 9 On 9/8/2024 at 9:44 AM, e5frog said: It's a black/white folder for a very uncommon cart, it would be unwise to scan it and put it out there for anyone to churn out prints from... If you just need to read it: https://channelf.se/gallery/txt/videocart19.txt On 9/8/2024 at 10:47 AM, TheFairChild said: Pardon me if this is a stupid question, but why would it be unwise? Are people really going to churn prints from it? What for? Wouldn't it be good to have it on archive.org (or the Facebook "Fairchild Channel F Fan Page") to make sure it is not lost from history? On 9/8/2024 at 1:48 PM, e5frog said: I made the text file, feel free to scan your #19 instructions and upload them, should you ever find one. @TheFairChild Maybe you missed the two points in the underlying concern. I think the concern is that since it is a basic black/white folder then it could be easily replicated, and since it is for a very rare cart and an even rarer instruction manual, then those people may attempt to sell the replication as an original and ask for higher dollars for a knockoff that the unknowing people would purchase. Quote Link to comment Share on other sites More sharing options...
TheFairChild Posted September 9 Share Posted September 9 21 minutes ago, fdr4prez said: Maybe you missed the two points in the underlying concern. I think the concern is that since it is a basic black/white folder then it could be easily replicated, and since it is for a very rare cart and an even rarer instruction manual, then those people may attempt to sell the replication as an original and ask for higher dollars for a knockoff that the unknowing people would purchase. Ah, I definitely missed that point, thanks for clarifying! I don't plan on owning the real stuff (either the Channel F or the actual carts). I personally use it on my recalbox, and for the other carts I do enjoy seeing the "old" scans (instead of a simple txt file). I just did some research and saw that the original videocart-19 is going for crazy amounts, so I understand the concern. Maybe one way would be for someone to scan it, and put a "watermark" before uploading it, so that it is clear that it is not an original. Anyway, I've made my peace with it, no big deal. My obsessive-compulsive disorder that tells me I miss one manual will just have to shut up On unrelated news, I have been reading the "F8_Guide_to_Programming.pdf", all pages on the veswiki, some source code of homebrew games available there. I also setup a dasm/mame dev env, and after some painful hit&miss, I've managed to plot a pixel going left to right (by using the plot function from veswiki)! processor f8 org $0800 LR $5,A ; 0800 55 NOP LI $40 LR 1,A LI 20 LR 3,A LI 0 loop: LI $C0 LR 1,A PI plot LR $40 LR 1,A LR A,2 INC LR 2,A PI plot JMP loop org $fff .byte $ff Yes, this is some awful code, and I kinda rely on the accumulator overflowing (and some bad things happening when trying to plot with coordinates outside of the screen I guess), but oh god how it makes you realize how hard it was to make complex things back then. I feel in awe when looking at code from pacman and stuffs like that. And when I see some guys here are making actual carts... You guys rock. Quote Link to comment Share on other sites More sharing options...
Atariboy2600 Posted September 10 Share Posted September 10 Some of my older collections on other systems are here - 2 Quote Link to comment Share on other sites More sharing options...
+fdr4prez Posted September 10 Share Posted September 10 4 hours ago, TheFairChild said: My obsessive-compulsive disorder that tells me I miss one manual will just have to shut up Don't give up on the search, but it'll just be something that will be hard to find. Quote Link to comment Share on other sites More sharing options...
TheFairChild Posted September 10 Share Posted September 10 It feels like I am missing something, there are a few things that I don't understand the "why" : - the padding at the end (org $fff and .byte $ff) : why is it needed? Is it documented somewhere? - the available bios calls, how did you know them? Reverse engineering, or is there a document I am missing? Couldn't find them in the f8 programming guide, so maybe there is another official source of info? Quote Link to comment Share on other sites More sharing options...
Mikebloke Posted September 10 Share Posted September 10 1 hour ago, TheFairChild said: It feels like I am missing something, there are a few things that I don't understand the "why" : - the padding at the end (org $fff and .byte $ff) : why is it needed? Is it documented somewhere? - the available bios calls, how did you know them? Reverse engineering, or is there a document I am missing? Couldn't find them in the f8 programming guide, so maybe there is another official source of info? Don't think it's necessary. Some of us do a "signature" at the end but it's not needed. I have a basic one pixel movement code I can share if that helps when I get home again, it has the basics of what you've done (plotting a pixel on the screen) with removing it once moved and the code to use controller buttons. Regarding bios calls, I think there is a separate file very similar to the 2600 that defines some things, which you can include. A few others like the "clear screen" command is done by calling a specific address and it does the job of wiping the screen for you (not particularly fast but fastest if you want to remove everything completely). Quote Link to comment Share on other sites More sharing options...
e5frog Posted September 10 Share Posted September 10 2 hours ago, TheFairChild said: It feels like I am missing something, there are a few things that I don't understand the "why" : - the padding at the end (org $fff and .byte $ff) : why is it needed? Is it documented somewhere? - the available bios calls, how did you know them? Reverse engineering, or is there a document I am missing? Couldn't find them in the f8 programming guide, so maybe there is another official source of info? Padding is/was for some emulation and other things wanted files at even KB boundaries. They have been reverse engineered, F8 Programming Guide is just about the F8 processor system in general, not for the specific built-in programs in the Channel F nor how the hardware is hooked up. Sean Riddle made some work on "BIOS" here: https://channelf.se/veswiki/index.php?title=Disassembly:Bios Alex West have made a huge contribution here: https://channelf.se/veswiki/index.php?title=Disassembly:Videocart_16 I did some work on Hangman: https://channelf.se/veswiki/index.php?title=Disassembly:Videocart_18 (I was going to patch port RAM to plain SRAM but got lost - with translation to Swedish. 1 Quote Link to comment Share on other sites More sharing options...
TheFairChild Posted September 12 Share Posted September 12 On 9/10/2024 at 10:18 AM, e5frog said: They have been reverse engineered, F8 Programming Guide is just about the F8 processor system in general, not for the specific built-in programs in the Channel F nor how the hardware is hooked up. Amazing. I've been reading the bios annotations, and had a look at the videocart disassemblies. The most interesting was being able to look at the pacman source, after a few days, I think I kinda understand how it works I used a bit of everything to do a simple code, when I can draw a pixel, change its color (by cycling through green/red/blue/bkg), and move it around (and check that it doesn't go outside of bounds). ; ; Control a pixel, while being able to: ; - change its color ; - change its position ; - make it permanent ; Thanks to the trove of information available at https://channelf.se/veswiki ; for making it possible. processor f8 include "ves.h" ; Constants START_X = 51 START_Y = 29 COLOR_BACKGROUND = $c0 COLOR_GREEN = $00 COLOR_RED = $40 ; Registers used PIXEL_X = 30 PIXEL_Y = 31 PIXEL_COLOR = 32 org $0800 cartridge.start: CARTRIDGE_START cartridge.init: CARTRIDGE_INIT main: ; clear screen, colored background li $c0 ; $d6 gray - $c0 green - $21 b/w - $93 blue lr 3, A pi BIOS_CLEAR_SCREEN program.init: ; init pixel (x, y) to middle of the screen SETISAR PIXEL_X li START_X lr S, A SETISAR PIXEL_Y li START_Y lr S, A SETISAR PIXEL_COLOR li COLOR_BACKGROUND lr S, A program.loop: ; draw the pixel (make it blink) li COLOR_RED lr 1, A SETISAR PIXEL_X lr A, S lr 2, A SETISAR PIXEL_Y lr A, S lr 3, A pi plot li $12 lr 5, A pi BIOS_DELAY SETISAR PIXEL_COLOR lr A, S lr 1, A pi plot li $12 lr 5, A pi BIOS_DELAY program.loop.readController: clr outs 0 ; enable input from controllers (related to bit6 of port0?) outs 1 ; clear port1 (right controller ) ins 1 ; read right controller first (requires half the CPU cycles than reading left controller on port 4 com ; invert bits, so that 1 means button pressed ni %10001111 ; mask out twists and pullup bnz program.loop.readController.endRead ; if button pressed, no need to read other controller outs 4 ; clear port4 (left controller) ins 4 ; read left controller com ; invert bits, so that 1 means button pressed ni %10001111 ; mask out twists and pullup bz program.loop ; no input, continue loop program.loop.readController.endRead: ; button pressed ni %00001111 bz program.loop.handleInput.changeColor ; up direction ni %00000111 bz program.loop.handleInput.up ; down direction ni %00000011 bz program.loop.handleInput.down ; left direction ni %00000001 bz program.loop.handleInput.left ; right direction (only one left, and we know something was pressed) jmp program.loop.handleInput.right program.loop.handleInput.changeColor: SETISAR PIXEL_COLOR lr A, S ci COLOR_BACKGROUND ; color_background is 192, the other colors are 0, 64, 128; loop back to 0 if we are at 192 bz program.loop.handleInput.changeColor.reset ai 64 lr S, A jmp program.loop.handleInput.changeColor.end program.loop.handleInput.changeColor.reset: li 0 lr S, A jmp program.loop.handleInput.end program.loop.handleInput.changeColor.end: li $64 lr 5, A pi BIOS_DELAY jmp program.loop.handleInput.end program.loop.handleInput.up: SETISAR PIXEL_Y ds S jmp program.loop.handleInput.checkBounds program.loop.handleInput.down: SETISAR PIXEL_Y lr A, S inc lr S, A jmp program.loop.handleInput.checkBounds program.loop.handleInput.left: SETISAR PIXEL_X ds S jmp program.loop.handleInput.checkBounds program.loop.handleInput.right: SETISAR PIXEL_X lr A, S inc lr S, A jmp program.loop.handleInput.checkBounds program.loop.handleInput.checkBounds: SETISAR PIXEL_X lr A, S ci 255 bz program.loop.handleInput.checkBounds.xyMin ci 102 bz program.loop.handleInput.checkBounds.xMax SETISAR PIXEL_Y lr A, S ci 255 bz program.loop.handleInput.checkBounds.xyMin ci 58 bz program.loop.handleInput.checkBounds.yMax jmp program.loop.handleInput.checkBounds.end program.loop.handleInput.checkBounds.xyMin: li 0 lr S, A jmp program.loop.handleInput.checkBounds.end program.loop.handleInput.checkBounds.xMax: li 101 lr S, A jmp program.loop.handleInput.checkBounds.end program.loop.handleInput.checkBounds.yMax: li 57 lr S, A jmp program.loop.handleInput.checkBounds.end program.loop.handleInput.checkBounds.end program.loop.handleInput.end: jmp program.loop ; Includes include "drawing.inc" ; Padding org $fff .byte $ff I used the ves.h, and the my drawing.inc basically contains the plot function from veswiki. I am really curious about how it was back then: do you think the coders at the time had access to internal Channel F documentation? For instance, I understand that for us, we know that to clear the screen to a specific value, someone had to reverse engineer the values "$d6 gray - $c0 green - $21 b/w - $93 blue". But back then, how did they know that? 1 Quote Link to comment Share on other sites More sharing options...
e5frog Posted September 12 Share Posted September 12 I'm sure they had some documentation. Brad Reid was going to check some boxes for documents a few years back but I haven't heard back from him again... guy must be around 70 or more. If looking through code you'll find the options used, more combinations of numbers is possible. They knew back then because it's hard wired... it was meant to be that way. There's only 255 other combinations than the startup color to try in the clearscreen routine - could always be tested... Fun to see you code! 1 Quote Link to comment Share on other sites More sharing options...
TheFairChild Posted September 13 Share Posted September 13 10 hours ago, e5frog said: There's only 255 other combinations than the startup color to try in the clearscreen routine - could always be tested... I actually ended up writing some code to do exactly that => loop through the 255 values, and see what could be used. Turns out there are not only plain screen colors, but also some fun patterns (lines of different kinds)! Quote Link to comment Share on other sites More sharing options...
ZippyOasys Posted September 13 Share Posted September 13 I've always to make a port of my Lyra game. Are there examples of how to make a jumping sprite? Quote Link to comment Share on other sites More sharing options...
e5frog Posted September 13 Share Posted September 13 1 hour ago, TheFairChild said: I actually ended up writing some code to do exactly that => loop through the 255 values, and see what could be used. Turns out there are not only plain screen colors, but also some fun patterns (lines of different kinds)! We need a youtube video - an displayed numbers. Quote Link to comment Share on other sites More sharing options...
Mikebloke Posted September 19 Share Posted September 19 On 9/12/2024 at 10:19 PM, TheFairChild said: Amazing. I've been reading the bios annotations, and had a look at the videocart disassemblies. The most interesting was being able to look at the pacman source, after a few days, I think I kinda understand how it works I used a bit of everything to do a simple code, when I can draw a pixel, change its color (by cycling through green/red/blue/bkg), and move it around (and check that it doesn't go outside of bounds). snip I used the ves.h, and the my drawing.inc basically contains the plot function from veswiki. I am really curious about how it was back then: do you think the coders at the time had access to internal Channel F documentation? For instance, I understand that for us, we know that to clear the screen to a specific value, someone had to reverse engineer the values "$d6 gray - $c0 green - $21 b/w - $93 blue". But back then, how did they know that? Congratulations, you got a lot further than I did in a lot quicker time! if you build up to making full games please make sure you share it with everyone. I've found that itch.io is useful for a releasing platform and some people will find you there - RetroAchievements site also seems to really bulge the number of people who plays games, when I first found them playing homebrew I was surprised that many people were playing games on the system even emulated! I mentioned I would upload something regarding moving a pixel but you've already done that so great work, regarding the ending and padding, there is a way (at least if you are assembling in dasm) of sort of "doing it for you" in case you were needing to change the size of files if they got bigger. That way you can change the variable at the top of your code (I usually only go as far as 4 kb but love to cut it down to 1 or 2 kb when possible). I totally nicked this off of other people doing homebrew so its not unique to me. ... (usually leave this near the top) game_size = 4 ; kilobyte size .... (game code) org [$800 + [game_size * $400] - $16] signature: .byte "·Michael·WR· 2024" In regards to my own homebrew, got round to finishing Super Wipeout, its kind of small on the screen, sorry, I was matching the relative size of the original game but I could totally do a bigger version in the future that takes more advantage of the size. All details, settings, etc, available at: https://mikebloke.itch.io/super-wipeout-channel-f 1 Quote Link to comment Share on other sites More sharing options...
TheFairChild Posted September 22 Share Posted September 22 Just got a kinda working version of Reversi out: The code is available on github for anyone interested. It’s not the prettiest, but I’ve learned a lot along the way. There's definitely plenty of room for improvement (and I mean a lot). I will continue to update/clean when I have time, there are still things that really bother me there The 1970s and 1980s were definitely an exciting time to experience. The F8 Programming Guide is a nice documentation, but the amount of reverse-engineering available on the VES Wiki is truly amazing. Thanks for that. 3 Quote Link to comment Share on other sites More sharing options...
e5frog Posted September 28 Share Posted September 28 Looks really nice, love how the board is drawn up. Don't understand why it says "SKIP" and then I can't do anything else but skip - and loose. If I make the upper right red chip green in any of the two ways possible I get the SKIP-message. If I make the lower red chip green game continues as usual. There's also a draw when no draw is needed. There are SKIP appearing all the time even if trying to play as "fair" as possible. Just tried the "master" release, the WIP doesn't compile. It could be a really nice game though. Quote Link to comment Share on other sites More sharing options...
TheFairChild Posted Sunday at 10:10 AM Share Posted Sunday at 10:10 AM Oops, my bad, I had a debug JMP in the master branch, that I was using to test draw/skip conditions (artificially making them necessary, so that I didn't have to play a whole game). I just pushed the master branch again without that JMP, so that it should be possible to play a real game now. Although it only supports player vs player for now, not player vs computer. The wip branch is just an attempt at re-organizing the code, I have a few ideas there but it ain't stable/compilable yet. Quote Link to comment Share on other sites More sharing options...
+fdr4prez Posted Sunday at 06:15 PM Share Posted Sunday at 06:15 PM Found at PRGE 2024 Quote Link to comment Share on other sites More sharing options...
e5frog Posted Sunday at 10:18 PM Share Posted Sunday at 10:18 PM 4 hours ago, fdr4prez said: Nice to see them out in the wild? Did they have fantasy prices for the loose carts as well? Quote Link to comment Share on other sites More sharing options...
Blazing Lazers Posted Monday at 01:56 AM Share Posted Monday at 01:56 AM 7 hours ago, fdr4prez said: Found at PRGE 2024 Lol at the price, and the seller doesn't even seem to have a box protector for it. I hope that nobody would actually spend that sum on Checkers, even a good condition complete and working copy. Quote Link to comment Share on other sites More sharing options...
+fdr4prez Posted Monday at 07:16 AM Share Posted Monday at 07:16 AM 8 hours ago, e5frog said: Nice to see them out in the wild? Did they have fantasy prices for the loose carts as well? Sorry, I didn't look at those prices. He also had a boxed console for $500, and the box was a bit rough. 5 hours ago, Blazing Lazers said: I hope that nobody would actually spend that sum on Checkers I was there for both days and I am fairly sure he did not sell any of the Channel F items. Quote Link to comment Share on other sites More sharing options...
Mikebloke Posted Monday at 07:22 AM Share Posted Monday at 07:22 AM Those prices are so dumb, I think that top loose cart says $27 but maybe it's $77! I still need to check out that reversi (or is it Othello 😉) game out, but good job getting something usable so quick! Quote Link to comment Share on other sites More sharing options...
e5frog Posted Tuesday at 05:15 PM Share Posted Tuesday at 05:15 PM (edited) On 9/29/2024 at 12:10 PM, TheFairChild said: Oops, my bad, I had a debug JMP in the master branch, that I was using to test draw/skip conditions (artificially making them necessary, so that I didn't have to play a whole game). I just pushed the master branch again without that JMP, so that it should be possible to play a real game now. Although it only supports player vs player for now, not player vs computer. @TheFairChild Seems to work great, but the end screen disappears quickly, perhaps add a delay and/or detect that there's no controller indata (release) before restarting. ; First wait for release .waitRelease: clr outs 0 outs 1 ins 1 com bnz .waitRelease outs 4 ins 4 com bnz .waitRelease Very nicely done, impressive coding - still love the drawing of the playfield. Edited Tuesday at 05:32 PM by e5frog Added information. 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.