Hi! | A|A (n n) \_/ First of all, sorry for been so long away from the Net. I'd got a virus (no, not computer virus, but the old kind), a cold virus. It stole my voice away, about 12 hours before I had to go to a Brazilian MSX encounter. A voiceless Cyberknight wouldn't be worth the money to go to the meeting, so I stayed home. Murphy's Laws are powerful! Anyway, I haven't stopped "doing things". I had planned to take an alpha version of a "Hinotori Houoohen" Music Player to the meeting. The program was an adaptation of my "Penguin Adventure" Music Player. Indeed, I just had to change the entry points. With some free time given me by my illness, I had the "insane idea" of scanning "Akumajou Dracula" (Vampire Killer). It is strange. Checking other games (not only from Konami), I realized that my program could only work with well programmed music routines, and only a few games, like "Penguin Adventure" and "Hinotori Houoohen", have them well done. So I started to work on a new version of the music player, one that could play "anything", and that's how was born the Yawara: General Game Music Player. "Yawara" is a Brazilian word (no, no, not Portuguese, but `true' Brazilian), the name of the biggest american feline, the "Panthera (Jaguarius) onca". It means "the one that kills with a single stroke". The word was corrupted to the well known "jaguar" (yes, like in "Sky Jaguar"). Why the choice? Well, if you didn't get it, then read the docs! If you did, then read the docs anyway... The program is composed of several modules, which automatically load one another, except for the program loader (Yawara.Bin), which must be loaded with BLOAD"Yawara.Bin",R. It is "user friendly", assuming you are an MSX friend (cursor keys to move through the options, <Space> to select, <Escape> to exit [of course, this is MSX, not a damn PC prog], <Select> to change program options, <Return> to activate some special feature). If you select a sound effect and play it without pressing <Return> to silence the BGM, they will be played at the same time (except, of course, if the effect or the music routine don't allow it - the "pause" effect, for example, uses to automatically stop the BGM). Once I have no more an MSX[1], I don't know if it will run okay: I was using two EX (SP),HL after each VDP access, what was making the code really messy. And what a surprise I found while debugging MSX[1] BIOS: it doesn't use them extensively. Indeed, most accesses are made with only one or two fast instructions between them (like INC A and others). The only situation that it uses the EX pair is after address set-ups (either for reading or writing). I optimized my code so that the time that would be spent by an useless EX pair is instead converted into usefull work. I became bold and also replaced the EX pairs of sequential reading and writing routines for a single NOP, when necessary, which has the same execution time of an INC A, and this is the part I'm not sure MSX will accept. BIOS puts about 16 clock cycles between two accesses (equivalent to an INC A and a JUMP or a single LD HL,(nn)). I did the same. If someone reading this has an MSX[1], please tell me if you have (or not) any problem. Thanks in advance. The program runs okay in my turbo R. fMSX 1.6b2.a is strange: it runs the shell, but refuses to read the keyboard! The interruptions are correctly intercepted, 'cause the animations run as expected, it even renders the `sprites' right, but it simply ignores any and all key presses. I don't know why and I'm not really concerned about it (it seems it has many other bugs, for it also refuses the EMM386 in my 486 and I read some awful bug reports). Oh, come on! If the program runs in a turbo R, probably the most idiosyncratic (did I spell the word right? - couldn't find it in the dictionary) MSX ever made, why should I worry about half-ready emulators...? Every module may have up to two presentation screens, one for the opening demo (not all games have them) and another for the main menu. If the program cannot find the proper screens, it loads and presents a default screen. By now, the only module that has presentation screens is "Penguin Adventure". fMSX 1.6b1 shows up a strange behaviour if it does not find a screen (it slows down the playback just a bit in my 486, but seems to run okay in a Pentium). If you find such problems, modify the screen names in the modules to "PenAdOpn.Sc2" and "PenAdTTT.Sc2", so they will load the only two screens available. fMSX1.6b1 has another very annoying bug: `sprites' that cross the right border simply disappear. The noise bar graphic is a `sprite', due to a lack of free space to create the proper characters (future version may have it as character). BRMSX runs okay and very fast, even in my 486. Its debugging feature may help you to find crashing points (if you find any, please, write me). A bug in version 1.136: in "fast mode", the emulator stops responding to the interruption sign after accessing disk driver. I thought it was a problem of my program, but MSX-DOS and MSX-BASIC also locks. Restoring "normal" mode unlocks the emulation. Except for fMSX 1.6b2.a, emulators don't render the animations as expected. I use the "old trick" of four alligned sprites to clip them off the windows' borders. And no, I don't prefer to modify the shape of the `sprites', because other animations are in my plans and they will require them unclipped. I recommend you get a real MSX. And about `sprites', absolutely no emulator rendered the VDP status flag correctly. No, it has nothing to do with "Yawara", but another project of mine, in which a sprite control routine uses the fifth sprite number to rotate the priority list, so all of them would have a chance to become visible in a faster rate than the "blind rotation" method (used by most programs, like Konami games, for example). I think Compile uses the "smart rotation" (also used by older video-games, though they didn't have the 5th flag - they manually checked the Y-coordinates). That's why Compile `sprites' become "transparent" instead of flickering, as they do in other games, when aligned. "Yawara" requires just an MSX[1] with 64 KB and disk driver to run (MSX-Music is required, of course, to play FM music, but most games can play in PSG when MSX-Music is not found). The program and the first release files can be found in my Page: http://www.fee.unicamp.br/~claudiom By now, the game blocks necessary to run "Yawara" are available, but once my work space is not very large, future releases will present only the new modules' pieces of data, so if you don't get them promptly, you will have to make them by yourselves (tools to do that are available everywhere, including in my Page). I have used Sean Young's copies of Konami ROMs, but some of them are "bugged": cartridges like "Antartic Adventure" (original Japanese cartridge) and other `oldies' are duplicated (the second half of the game is equal the first half). I can understand (but not like) that it may be required by some emulators for games like "Athletic Land - Colecovision Version" (it is marked "beta" around the Net), which starts at 0000H, but not to "Antartic Adventure", which starts at the expected 4000H. I can neither understand why 8KB ROMs are filled up to 16KB with some garbage. Just to make them 16KB long? Emulators don't accept 8KB ROMs? Nasty, to say the least. Yawara will ignore any datum beyond the expected range. Then, why am I making so much trouble about it? Simple: 720KB of disk space is not enough to hold all ROMs and game blocks. Reduce redundance, reuse disk space and recycle storage media. Hmmm, MSX is ecological... Other Japanese game ROMs can be find in FUNET, but many of them are defective or are available in different versions. Most european Spectrum convertions are not originally ROM games, making it far harder to get the correct code and datum blocks. I recommend you get my "non-konamic" ROMs and european game blocks. A problem: I have found corrupted ROMs, probably by stupid pirates. A shift of only one byte is far enough to avoid Yawara's modules to work correctly, so try to get a ROM mirror as original as possible. If you get a mirror directly from an original cartridge and it doesn't work properly, then you have found a different ROM version or mine is corrupted. You may disassemble the mirror file and find the correct entry points (they are probably near of the other version's ones). If you cannot do it, then send me a copy of the mirror (please, ask me before doing it). If you have suggestions or "reasonable" problems, write me: [EMAIL PROTECTED] These are the currently supported games (in module alphabetic order): - Akumajou Dracula (Vampire Killer); - Amaurote; - Antartic Adventure (original Japanese version); - Athletic Land (Colecovision version); - Athletic Land; - Back to The Future; - Cabbage Patch Kids; - Circus Charlie; - Comic Bakery; - The Goonies; - Gradius (Nemesis); - Halloween; - Hinotori Houoohen; - Hyper Olympics; - Hyper Olympics 2; - Hyper Rally; - Hyper Sports; - Hyper Sports 2; - Hyper Sports 3; - Jagur - Golden Triangle; - Jet Bomber (without SFX, but with voices). - King's Valley; - Mad Mix; - Magical Tree; - Magical Kid Wiz; - Majou Densetsu - Knightmare; - Majou Densetsu II - The Maze of Galious; - Majou Densetsu III - Shalom; - Mon Mon Monster (PSG/FM); - Mopiranger; - Yume Tairiku Adobentchya- (Penguin Adventure); - Pippols; - Q-Bert (Konami); - Thexder; - Treasure of Usas; - Twinbee; - Rally-X (with some SFX); - Road Fighter; - Survivor (without SFX); - Warroid (without SFX); - Yie Ar Kung-Fu; - Yie Ar Kung-Fu II; - Zanac; - Zanac - Second Release; "Why are there so few european games? Why are not games "XXX" and "YYY" in the list?" The answer to such kind of questions is very simple: most of my mirror copies of other games are stored in "strange" MSX-BASIC files, mainly the european games, so I have to put them to work first, as I did for "Survivor" and "Jet Bomber". There are lists with the games that are in my plans for future releases. I cannot promise I'll be able to make them all, but I'll surely try. If you know a game not in the lists whose music you would like to listen to, write me (maybe you will have to send me a copy of it, because my personal collection, mainly of european games, is not so large). Most FM and some SCC based games are not in the lists because the support to those I.C.s are not completed and I didn't care much about writing them. * Note about "Hinotori Houoohen" ("compilation story of the legendary bird goddess of the fire" - wow! amazing what one can write with just 5 "kanji"): those people that have already seen the "anime" or listened to the original soundtrack will notice that I invented the titles, because the musics don't match the OST except for the refrain of "Hinotori", played on the opening screen and endlessly when you find a "houoozou" (Hinotori Statue). By the way, the lyrics of that song can be found in my Page (with a translation). * Note about "Akumajou Dracula" (`castle of devil Dracula', "Vampire Killer"): the musics match the Famicom CD I have, though there are musics in MSX not available in the disk ("game over", "stage clear" etc.) and two musics available in the CD not present in MSX ("Underground", in the naming screen, unexistent in MSX, and "Voyager", from the ending demo, replaced by another music or an arrange so different I couldn't identify it). And I found a strange problem: music with code 83H in MSX is named "Out of Time" in the CD, assigned to the clock tower stage, and music 85H is named "Walking on the Edge" in the CD, assigned to an underground stage. Are those assignments correct? Did someone played "Akumajou Dracula" enough to reach those stages? Why am I asking this? Because those two musics have places swapped in the CD (all others are exactly in the same order). What stage comes first in MSX? What are their music codes? Thanks in advance for any information... * Note about "Zanac": the game known as "Zanac 2" seems to be a second release of "Zanac", not a sequel (what would explain the unchanged presentation screen). There are modules for both and I couldn't hear any difference (though I had no time to check it for new entries). If someone finds anything different, please write me. * Note about "Survivor": it was the first Spectrum game convertion I scanned. The playback pitch is not defined by the interruption, but by a loop! I'm using a "ratio counter" (similar of those used for integer line drawing) to simulate the loop delay via interruption. The module checks the system frame drawing frequency (60Hz/50Hz) to use the proper ratio value. You can change it in "real time" pressing <F4>/<F5> keys. * Note about "Jet Bomber": the program is so "nasty" that the normal execution flux sends invalid datum to the PSG register 7. It sets both joystick control bits to 0, `id est', for input, what won't probably damage the MSX circuitry. My music module uses its own PSG set-up routine, avoiding any risk. As far as I could check, the game, fortunately, never sets both bits for output, what would put the joystick control ICs in short-circuit, melting them down and digging a crater that would reach the center of Earth and start a "China Syndrome"... * Note for "Majou Densetsu" (`legend of the supernatural/ demonic castle', "Knightmare"): there are two sound effects that sound very strange. Both play the same notes, but one with noise off and the other with it turned on. The sequels to the game, "Maze of Galius" and "Shalom", are in my plans, but they are packed somewhere else, so they will come, as says Fuchur, "with a little luck", in the next release... * "Antartic Adventure" and "Athletic Land": they are both Colecovision converted games. I remember someone saying that "Antartic Adventure" was `exactly the same ROM'. I don't remember who said that, but the guy didn't really check it or he made some mistake and compared the same machine ROMs. "Antartic Adventure" was surely recompiled, for it starts at 8000H, not 0000H. It also uses the system interruption hook. "Athletic Land" was modified, too. The Colecovision version starts at 0000H, but it makes sure that the system hooks are disabled. The second release version starts at 4000H and was completely modified (some musics are also slightly different). All these games don't use any MSX BIOS routines, of course, and the PSG ports are correctly readjusted to A0H~A2H. The music routines are basically the same of all later Konami games. By the way, does anybody know the name of the classic musics played in "Antartic Adventure" and "Circus Charlie"? I only recognized the second movement of "Waltz on The Blue Danube" (in "Circus Charlie"). * About "Rally-X": except for "Jet Bomber", the worst coding I have ever found. It seems the programmers used some kind of midle-level programming language (I'd found branches to the next instructions [JR +0] and other nasty coding). * "King's Valley": the game tries to modify itself. Of course, if it is an original ROM, nothing will happen, but if it is used in RAM, with "game loaders", the game will not run the same way. A similar problem happens to "Twinbee" and probably other older games. * "Treasure of Usas": big problem, I've found a different version of the game. At first, I thought it was just a scrambled mirror copy, but the differences are too extensive, as if it was recompiled. I think it was. The blocks packed within Yawara are from that version. I couldn't hear any difference in the musics. I also found different versions of "Yie Ar Kung-Fu", both part I and II. The module can identify the version and access the correct entry points. * "Mad Mix": very interesting code. The game is probably the same of Spectrum version, but the interruption handler was rebuilt to allow it to play some music and sound effects. The coding style is a bit messy (the current module doesn't play correctly some effects just after others been executed - playing a music corrects the problem). The activation routine has a very interesting behaviour: if an effect is cast before another one is finished, a new PSG channel is requested to execute it, so up to three effects can be played at the same time (though sometimes the routine "shakes" itself a little and one or another effects are restarted). * "Amaurote" and "Halloween": considerably well done music routines, though not optimized. I think both games have their music routines programmed by the same person (or one was copied from the other), because both use the same code structure, containing even the same "bugs". By the way, does anybody have a good copy of "Halloween"? Mine was modified by an idiot pirate. The game locks up at a certain point of the game. I don't know if the music is damaged... The released music modules may have question marks "?" for dubious entries. Multiplication marks "x" or asterisks "*", depending on the loaded font, denote entries explicitly used by the program. MSX-Music (FM) modules can be created. There is only one available, for "Mon-Mon-Monster". No bar graphic is displayed, though, but I'm working on it. SCC musics are not available, by now. A new version of "Yawara" will have SCC access, if I can understand the docs right. By the way, according to a Konami SCC development staff member, in interview to MSX Magazine (yes, years ago), SCC means "sound CREATIVE chip", not `custom', as most people guessed (including myself) and a few convictly affirmed. This trivia has been in my Page for a long time, but I forgot to tell the story here. `Called by any other name, SCC would sound the same'... *** Important note: I'm already working on the next release of "Yawara". I was scanning "Star Dust" (european game by "Topo Soft") and I found a very hazardous bug: a piece of code sets both joystick control bits to output! Yes, the "China Syndrome" thing I was talking about earlier... Search for the following piece of code: ... C1C9H: 20 29 ) jr nz,C1F4H C1CBH: 3E 07 > ld a,07H C1CDH: D3 A0 Ó out (A0H),a C1CFH: 3E FF >ÿ ld a,FFH <- ?! C1D1H: D3 A1 Ó¡ out (A1H),a C1D3H: 3E 0E > ld a,0EH C1D5H: D3 A0 Ó out (A0H),a C1D7H: DB A2 Û¢ in a,(A2H) ... Change the marked instruction to: ... C1CFH: 3E BF >ÿ ld a,BFH <- !! ... I didn't check if PPI is set right (it also can melt down your computer...) "Star Dust" loads itself over the MSX work area (from C000H until FE44H), which is used by the current version of "Yawara" to allocate essential routines (because of the stack pointer and disk driver use of that page). But don't worry, Yawara will "kill" it, too... [Brazilian Portuguese mode activated] Mensagem para os fanaticos em futebol: como diriam os franceses, "c'est la vie"! Agora que "aquilo" ja' acabou, apesar da imprensa `pensar' o contrario, lembrem-se que neste ano ha' eleicoes. Aqui vao minhas advertencia: cuidado com francisco rossi (Sao Paulo, governo), ele e' evangelico financiado pela igreja universal (preciso dizer mais?). Tambem cuidado com toda a familia Suplicy. marta (SP, governo) esta' tentando trazer de volta a censura aos meios de comunicacao. O marido e' outro idiota: seu filho `retardado' defendeu tese a favor do nazismo e seu pai estava la', apoiando (segundo dizem, sem nem saber o que estava fazendo - que "beleza" de politico ele deve ser, nao?) E o nosso presidente? Prometeu um salario-minimo de R$200 ate' o final de seu mandato (sem comentarios), enviou um projeto ha' alguns meses, poucos antes de seu final, e o desgracado tem a coragem de chamar os `outros' de demagogicos. E, finalmente, eneias, nazista armamentista nuclear. "Barra pesada". Acho que nao preciso falar sobre maluf, brizola etc.... [English mode restored] Another note: there is a new revision of "Gremlin", my multiplataform MSX disassembler. I found a bug while disassembling MSX BIOS: it didn't print the labels when the address print option was disabled (it didn't checked them). It will still not print a label if it falls in the middle of an instruction, because there is no single solution for such cases (the actions would depend too much on what the user would prefer for each situation: break the op-code, print label with offset, automatically create new label and so on). | A final note: I dedicate this release to the memory of A|A Cassandra, a poetess and wonderful friend. I had known (v v) her for a very short time, and now she is riding on the \_/` wings of Hinotori, living forever in that special place where the dreams are born... ... Cyberknight... <Over> **** MSX Mailinglist. To unsubscribe, send an email to [EMAIL PROTECTED] and put in the body (not subject) "unsubscribe msx [EMAIL PROTECTED]" (without the quotes :-) Problems? contact [EMAIL PROTECTED] (www.stack.nl/~wiebe/mailinglist/) ****