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/)
****

Reply via email to