Post by picachu on Jul 2, 2018 9:03:48 GMT
Good to everyone, again I'm around.
My intention is to modify a block from program to block of bytes.
I do not know if this will be possible.
The fact is that I am doing tests, I have created a minigame with AGD, I have added a menu of control selection written in BASIC, until here everything works perfect.
Now I want to insert music with AGDMUSICIZER, I add the music, and the load screen, a new tap file is created, and well, it works but it skips the menu that I added in BASIC.
As I have observed, when loading at natural speed, when the cassette loaded arrives at the TESTmenu program, it is where it seems to ignore reading the data, and then in the block next following continuous that is where the AGD game loads.
So, if we look at the load, 2 programs are actually found, is that possible for a correct operation?
So, I thought about modifying the program block TESTmenu for a block bytes, but I do not know if this is possible.
Well I hope your help please !!!!
Post by lukebord1 on Jul 3, 2018 9:53:19 GMT
Hi Picachu, sorry if it could sound harsh, but the above tap file is really confused.
As said several times, it's always suggested to start gradually, since the lack of knowledge of basics leads to continuous errors
, as in your case.
There's nothing wrong with learning by making mistakes, but this isn't an AGD-related problem
, rather it's a question on how to correctly save code on a ZX Spectrum.
You're using a tool to have a kind of "view from the above" of the tap blocks, but you can manage each block by simply learning how to save a Basic program OR machine code data directly using Basic commands, even through an emulator.
It's mainly needed to learn essential Basic commands, then understand how to join programs/data blocks directly through the Spectrum to finally make a classic tap file like this:
- Basic loader (could include a Basic menu and the call to the following machine code program);
- Loading screen (optional)
- Code block (game, assembly extras such as effects or music)
Since the question isn't strictly related to AGD, I invite you to post it in a more appropriate place (e.g. the WoS Forum, or the ZX Spectrum Basic Programming page on Facebook).
Here're some links surely useful for you:www.facebook.com/groups/ZXBasic/www.worldofspectrum.org/forums/zxnext.narod.ru/manuals/Basic_Programming.pdf
Post by alessandro on Jul 4, 2018 14:26:41 GMT
besides the links posted by lukebord, I would suggest you to ask for advice for non-AGD related matters at the Spectrum Computing forum
as well. I am also active there, and you will surely find quite a few other people willing to help you.
On the other hand, you should be aware that AGD Musicizer is a "do-it-all" tool, and since it leaves you little control over the final result - unless you are able to hack the source code, but I am afraid this is out of your reach at the moment - you should accept things as they are. It is not impossible - I did it with the new version of Apulija-13
- but it would require at least a basic knowledge of Z80 Assembly.
More specifically, before attempting at inserting a custom BASIC menu and
inserting an AY in-game tune with AGD Musicizer, you should try to understand well how these two separate things work.
ZX-Blockeditor is a superb tool to modify Spectrum tape and disk image files, but it won't perform any task for you. As lukebord wrote, you cannot expect a random (or almost random) succession of machine code and BASIC blocks to load one after another successfully. You should be aware of what comes first. The simplest succession would be a BASIC autostart program like:
10 CLEAR 30499
20 LOAD "" CODE
30 RANDOMIZE USR 32000
followed by your AGD game code block. This example assumes your game code block begins at 30500 of course - remember that before loading a machine code block in the Spectrum's RAM, you must provide space for it
, otherwise you'll make the system crash. Space is provided by issuing a CLEAR command followed by a number which is the beginning address of your code minus 1.
If you wish to add a loading screen you could insert a line between lines 10 and 20, e.g.:
15 LOAD "" SCREEN$
Hope that helps