How about a more high level approach that allows defining a kind of display list? E.g., RASTER"50,32,0;100,32,1" for setting up an IRQ that, in scanline 50, sets D020 to 0, then, in line 100, sets D020 to 1. Just a quick shot, there's probably more flexible ways to implement this (allow variables at some positions in the list? E.g., "50,32,C%").
the basic command is really funny and yet also very useful. Demo effects in basic games, it really has something 😃 it's just important that the command comes into the official ROM, so of course you don't use it... But maybe the cool demonstration will ensure that the command is adopted 😃
I also find the command very useful and it offers good possibilities. As the demo show it also works. Why should it not be built into the rom?
I am not quite clear how this works? The mega65 is open source, so that one should be able to simply insert the source for the command into the project rom. Or does someone decide what comes into the rom and what not? So that the rom is not in the sense of community open source?
Sam231 well in every open-source project you have one or several maintainers, usually those people who started the project. And while everyone can make contributions, it's the maintainers' decision what to be really put into the project. If for some reason you disagree, you're still free to "fork" the project, i.e. to create your own line of that ROM, so people can decide whether to continue using the official ROM, or "Sam's ROM" instead. Just like you can create your own Linux distribution, for example. But in most cases, most people will of course continue to use the official ROM.
Or does someone decide what comes into the rom and what not? So that the rom is not in the sense of community open source?
The additional difficulty with the ROM is that it is one of the parts of the MEGA65 project that cannot be open source, because despite all the changes and innovations that have been added, it is based on the original C65 ROMs from Commodore, and there is still a rights holder for this. This means that although the source codes are available, they may not be publicly deposited on Github.
In addition, as ZeHa has described, it is so that the team (for the ROM mainly Bit Shifter) has the "last word", what and how something is included in the ROM or not. Alone to guide and direct it all in their sense of the team.
in other words: actually it doesn't make much sense to work on alternative cores, since the vast majority works with the official one, which in turn is also good so that you can make software for everyone. But snoopy's work here is really good in that he did a proof-of-concept with it and the team wouldn't have much work to do to take over the new command.
in other words: actually it doesn't make much sense to work on alternative cores, since the vast majority works with the official one, which in turn is also good so that you can make software for everyone.
You don't have to be so strictly fixated on one(!) ROM. In contrast to the C64, a ROM change is no problem and takes a few seconds.
I could imagine here that depending on the focus there are also corresponding ROM variants and can be used. Similar to cartridges in the C64, but more comfortable via ROM selection when starting the MEGA65.
For example, a ROM used for BASIC games in text mode could completely omit the routines for bitmap graphics and instead expand and provide specific commands like here the SYNC or for sprites, character, music etc.. In many cases the performance of the computer is no longer an obstacle in BASIC programming, but that for some things there are no simple BASIC commands for it. It would be ideal, if one would not have to use a single POKE, PEEK or also DMA etc., if one wants to program a non trivial game in BASIC.
It would be ideal, if one would not have to use a single POKE, PEEK or also DMA etc., if one wants to program a non trivial game in BASIC.
This is exactly my opinion!
However, I don't agree that it would be cool to have lots of different ROMs. The community in general would benefit a lot from having one good ROM. Everyone has bought the same computer, after all. Of course it's good that you CAN do different things with it - but there should be a mainline that is the official truth and serves as a common ground for this computer. It's one of the strengths the C64 has over many other computers.
However, I don't agree that it would be cool to have lots of different ROMs.
As long as all commands fit into a ROM, there is no need to do so.
But I don't see any reason in principle against additional "official" ROMs, which you can then use specifically for games in text mode or - what do I know - for financial calculations or 3D graphics, for example. The ROMs are available for all owners, if they want to use them.
My view is that one should not "unnecessarily" give up possibilities just because one wants to pack everything into a single ROM "for the heck of it". The MEGA65 is much too flexible for that.
If for some reason you disagree, you're still free to "fork" the project, i.e. to create your own line of that ROM, so people can decide whether to continue using the official ROM, or "Sam's ROM" instead
Thanks, but I do not have the skills to work on a ROM. I was just surprised that here is "asked" that you take the command, which obviously already exists (otherwise the demos did not go) with the ROM. I was of the opinion that with the Mega65 all can cooperate, which have the abilities for it. But okay, is then probably only the team that contributes content here and controls the whole thing.
Well, Snoopy is not part of the ROM team, but the ROM is open-source enough so he can also change it. But he changes it on his own computer. Then he can send this change to the team and they can decide whether they a) accept it, b) modify it and then accept it, or c) reject it.
I was just surprised that here is "asked" that you take the command, which obviously already exists (otherwise the demos did not go) with the ROM.
You have to distinguish between the official ROM of the team and own developments.
If you create your own ROM, you can also make it available to everyone in the form of patches. Here, everyone can do as they please. For example, I have created the BASIC 65.EX and it would be just as conceivable that one - what do I know - "Forum64 ROM" created and published. This is the open source idea of the MEGA65 project.
And then there is just the ROM from the Mega team, which is published as the "official" ROM. And here the team looks exactly at what and how something should go in there. This is "their thing", even if they are always open to suggestions, in the end they also collect the criticism and praise for it.
yesterday I took the MEGA65 to our local makerspace and did a bit more BASIC coding there. Of course, I'm mostly interested in coding games. I made use of the COLLISION command, but I noticed that I would also like to sync up my main loop to the monitor refresh rate in a way, so I got the following idea:
How about a command that helps you sync up to the raster frequency, e.g. either something like that:
SYNC 220, 400
this could tell the BASIC65 to register a raster interrupt on raster line 220, which should then GOSUB into BASIC line 400 (similar to how the COLLISION command GOSUBs to a BASIC line)
or something like that:
to be used in place, e.g. instead of SLEEPing inside your main loop for a certain amount of time, you could tell the BASIC interpreter to wait until raster line 220 has been reached. Basically like reading $D012 and the high bit of $D011 and waiting for a certain number, but in a more convenient, BASIC way. Without arguments, SYNC could just wait until the off-screen interrupt for PLAY, MOVSPR and so on occurs.
maybe there are even other, better versions of how to implement this, so I'll leave that to the BASIC experts, but I think having something like this would make game programming in BASIC so much better!
VSYNC is included in the newest ROM, now.
Cool, richtig gut, danke an das Team, muss ich sofort aktualisieren und ausprobieren!
Ich hab das gestern im Emulator ausprobiert, da kam ich nur bis Rasterzeilte 262 (also NTSC, obwohl der Emulator auf PAL lief und es eigentlich bis 312 gehen muesste)
Ah, auf meinem anderen Rechner und anderer Version vom Emulator gehts
I was just in the mood for a slightly different demo. "Classical German Education" ...
The wandering "reading line" is realized with the help of the VSYNC command.
I have attached the program as a packed D81 image and will also upload that to the filehoster.
Just a short interim result of my programming attempts today. I love the VSYNC command, because it allows such nice effects in BASIC!
It is really amazing what has been packed into the MEGA65.
I played around with it a bit more and made a little photo demo in BASIC. I really enjoy playing around with the new features of the MEGA65.
This program runs perfectly in the emulator, but not on the Nexys board (Core 191, ROM 920366).
Could someone please test this on a MEGA65? I have attached the zipped D81-Image.