Yeah, he said he had only worked 4 months on it. The game engine scrolls, you can control the player, there are enemies and you can shoot. That's about it at this point.
BTW, one of the big hurdle at the moment is music. Ideally we could re-use the MOD from the Amiga running on the OPL4 but the source code of the MOD player available on this site does not seem to work.
Does anyone know the author of this MOD player so we can try to contact him?
The Ultimate MSX FAQ mentions three different Amiga MOD players (of which one is an improvement of a previous one). Did you try all of those?
Another option could be to convert the MOD data to MWM (if that's possible) and probably re-work it a bit here and there (which I would theoretically be willing to do for you).
Third option: convert the MODs to MIDI and use that program/code that plays MIDI files on FM-PAC. I think this is used in Pointless Fighting and also in the Super Something World port that is in development.
Also good to point out that a regular MOD player can't play the file, I presume a MOD file is in it's basics a standard, or are there differences because companies tried to protect them?
So converting the data to MWM or MIDI might not work because of that difference?
Hope it works out
Third option: convert the MODs to MIDI and use that program/code that plays MIDI files on FM-PAC. I think this is used in Pointless Fighting and also in the Super Something World port that is in development.
Pointless Fighting uses Guyver5, which is an MML replayer (thought you need to convert the MML data to a propitiatory format first). Some other games also uses this, like TNI games obviously and the upcoming Inferno.
Wolverine_nl wrote:
Also good to point out that a regular MOD player can't play the file, I presume a MOD file is in it's basics a standard, or are there differences because companies tried to protect them?
So converting the data to MWM or MIDI might not work because of that difference?
Hope it works out
The MOD file format is widely used standard, and not at all protected (you can just load them in a tracker).
In bluemsx i get an some "unexpected end of file error" while using that improved nop player by yobi (im not that familiair with this software so i may be doing something wrong myself). Didn't try any other option.
Mod files can easily be ported to MWM.
I did a little try a while ago until I ran into an ancient bug concerning own wave 32.
If sampleram is no issue, a fairly good sounding 1:1 is feasable as this try proves (I stopped when the bug appeared).
This bug has been fixed by BiFi so it's possible to use more than 32 own waves now.
Third option: convert the MODs to MIDI and use that program/code that plays MIDI files on FM-PAC. I think this is used in Pointless Fighting and also in the Super Something World port that is in development.
Pointless Fighting uses Guyver5, which is an MML replayer (thought you need to convert the MML data to a propitiatory format first). Some other games also uses this, like TNI games obviously and the upcoming Inferno.
Wolverine_nl wrote:
Also good to point out that a regular MOD player can't play the file, I presume a MOD file is in it's basics a standard, or are there differences because companies tried to protect them?
So converting the data to MWM or MIDI might not work because of that difference?
Hope it works out
The MOD file format is widely used standard, and not at all protected (you can just load them in a tracker).
In bluemsx i get an some "unexpected end of file error" while using that improved nop player by yobi (im not that familiair with this software so i may be doing something wrong myself). Didn't try any other option.
I also get that error message with the MOD player where the source code is included so I'm not sure if this is a buggy version or if I'm missing something. The Agony MOD files work well with the MOD player which comes with the GUI but it's not really helping oO
Hi there some news about this project, I'm now able to include sound fx (load an mwk file with tones included that I load in the opl4 sram and playing it on an available wave channel). The mwk file can be loaded from the rom.
I hope porting the mod to mbwave track and playing it with an mwm player... but the mwm player I have is a 12k com file, so i have started to dissamble it in order to modify the mwm load routine as well as the play routine.
I have sent a message to Marcel Delorme, maybe he can help with it.
In paralel I'm still writing v9990 test cases for you Manuel but there is one that I cannot reproduce anymore, maybe a bug in my code somewhere in the game. I must admit that the behavior were really weird, Maggoo also had the issue on his hardware, so be patient I will go back to that aspect when I will 100% sure of the issue origin.
FWIW, I made an XM player for MoonSound. Well, a subset of XM, and the song has to be converted to a smaller format to be playable, but anyway. The code is mostly in C. https://sourceforge.net/projects/sootsound/
Not yet, but Joel could make some Or Joel, if you don't mind, I can also make some of the version you showed in Nijmegen, if I can find back the ROM file somewhere.
Manuel, I cannot make a video this week (I'm in Austria this week), so yes you Make the video and publish it as you like, the version you have is not running on real hardware, I have a new version with corrections that I will share, this week you will receive the test cases in a rom file format.
128 k, not enough, Wow, I can ask to Frank Sauer which samples they used, he wasn't the author of the soundtrack but I know they had to change a lot to fit their volume constraints (3 disks), we can use one of the unused track with classical instrument in order to reuse as much as possible the rom instruments.
FWIW, I made an XM player for MoonSound. Well, a subset of XM, and the song has to be converted to a smaller format to be playable, but anyway. The code is mostly in C. https://sourceforge.net/projects/sootsound/
Wow look like to be an interesting project.
I can browse the c source in order to convert it in asm.
I've to come back on this sample ram size while relistening the OST on Youtube. I took for granted that a good MOD is larger than 128kB, but Agony doesn't use that many samples per song.
In total it's quite a lot more than 128kB, but per MOD it should probably fit.
Joel, well I can also wait until I get the update from you. Or does it look and feel the same? (Perhaps it's slower due to some limitations you encountered that were not emulated yet... I don't want to make a video with a false impression on the real experience!)
Do you use any palette changes? The v9990 has a 'bug' that it shows 'white snow' if you change the palette while the v9990 is drawing on the screen. Only during vertical retrace you can change the palette without any visible side effects. OpenMsx probably doesn't emulate this.
Indeed, I figure out all these issues when I have received my v9990 (last month) I had to change things to make it work on real hardware. And indeed you see this snow, it's still okish but not perfect on big monitors for sure, I will try to experiment something to limit these effects but I cannot get rid of it completely.
The water animation is not entirely the original one, it has been adapted (not that much because the original work is awesome) to be seen in 256/212 (because you see more animation issues in a smaller resolutions ), The creator (Franck Sauer) made a great work in the 90s to produce that artwork (I had the chance several times to visit him during the dev of Agony and Outcast since we were still in contact at that moment).
320/200 with 16 px black as header, in that version, there are a 12px footer(to each 212), one idea could be to add gfx top and bottom to scroll vertically depending on the owl position
Thanks a lot, I really appreciate, it has started as a challenge to learn the V9990, now, I need some approval from the original developpers to continue the work, currently the only conditions I knew are no selling (I'm not doing that for money for sure) no deterioration of the art aspect ... And there, I'm very concerned in this, the V9990 capabilities are not as I was expected, I had to tune a lot the gfx to be showable, the mgt of 4 palets is really a pain in the ass, so I need confirmations from the author that what I'm doing is not bad.
I figure out that an Msx deluxe with a v9990 is not an Amiga, the vdp3 blitter is like the atari one, nothing more, You cannot do what you want at each line interupt ... There are big improvements, of course... I think that an advanced msx konami g ame like would more fits the specifications.
so I need confirmations from the author that what I'm doing is not bad.
I don't understand, so far I assumed a direct Amiga port to MSX3 why is the mood suddenly bad
Amiga 500
2 layers a 8 colors
hardware sprites 16 colors. then only 4 sprites per scanline.
12bit R,G,B DAC
all lower spec than 9990
tell what you used in which palette and where is the problem.
and what are you blitting and what is slow
Hit9918: The is not exactly how the Amiga display works. It has 5 independent bit planes which can be combined or moved independently, it also has a copper CPU which can execute commands independently from the 68000. This game on the Amiga uses those features extensively.
The background layer on the Amiga (with the moon and cloud and gradient colors) uses a single bitplane (1bit/color)
and the sky color gradient which is a few hundred colors on its own is managed by a copper list. Toll on the CPU = 0.
Once that is done, the Amiga still has 4 bit planes left and sprites which it can also easily multiplex with the copper or manage as "software sprites" with the other Blitter co processor.
So while the V9990 can do a lot, some of the bitplanes organization and copper tricks used to get the results on the Amiga are not always easy to port exactly "as is" given the very different way the V9990 & MSX work. It's not a question of better or worse hardware. Agony just happens to be designed to take advantage of the very specific Amiga Hardware.
The Amiga hardware was capable of 2 playing fields that could overlap, and there were many games using that feature. However, Yves devised a way to provide more overlaping planes, and developped a prototype with 3 full screen of parallax scrolling.
That means the 3 three planes of parallax seen in Agony is a software trick. A very well devised software trick, by the way.
After what syn said with copying 4 screens per frame in bitmap mode. one could try 64 color bitmap mode. Who knows, maybe it could blit all the layers.
With a software nametable, maybe 32x32 pixel tiles, the empty parts are no blit.
and in tile mode beware that the blitter got to run in vertical border, there is the speed, not in display area.
openmsx tables look like it's 6 times slower in display area. which is no shame because there is a whole screen wide of sprites.
but I wouldnt bother the third layer and pose with improved 9990 sprite colors. amiga sprites need to be of the pale 7 colors of the front layer.
Guys, if you are sure that blitter is faster in b mode, I can give it a try, next week (I'm fully busy with the music play routine port on rom), maybe there are a way to include the third playfield.
but what are you blitting?
I suspect you blit the water in the style of a bitmap machine. a screen wide of background, then a screen wide of water.
but a tile mode needs only a fraction of it. in how many pixels does it repeat, maybe 64*32?
it maybe needs 3 versions, one with sky color background, one with black background, one with the graphics underneath at the transition points.
on the bottom I see a scroll register action.
in the scene where a sprite is there, 3 things wobble versus each other random. while it should be one stable image. the split 1 pixel apart, stable.
how is that pattern possible, I feel there could be some performance loss in that issue. in the timely order of things.
That palette change snow is unfortunate, didn't know about that... hopefully it does work during hblank.
The blit itself may be fast, but starting a blit command takes several times more CPU instructions than changing a tile in pattern mode. So for large copy areas the V9990 is quite fast in raw blitting speed, however as the number of draw calls increase it quickly starts to put a significant load on the CPU... Something to be aware of.
But luckily there is also plenty of VRAM to waste. And thanks to the nice command completion interrupt you can use the downtime between blits effectively for game logic. I wonder if the V9990 is fast enough to do full compositing each frame.
@Grauw, it's a 256/32 blit copy every 4 frames and it's quicker than all the outs that the cpu must perform to update the tiles, I have tested it, so yes you are right, the blitter can be, depending on the case a faster solution.
You have better explained the case than I, thank you
The issue you see on line 180 (last line interupt) is related to the change palette, it's the last time I'm replacing the palet.
On openmsx, if I put a line interupt at 200, you won't see it anymore, on real hardware as well (this video is à old version)
The change palet issues in the rasters, I don't have any solution right now excepting reducing the gradient level by 2.
Or changing everything to go in B mode without any garantee that I can reproduce somekind of dual or trple playfield with a combination of blit with logical operation and page swaps.
oh it is only one blit per 4 frames.
then there's nothing wrong with launching the big blit and that's it.
the question is where and why is the cpu waiting for the blitter.
it cant be the blitter speed per se. even the little 9958 could blit this rate.
a blitter wait that shows rasterbars where the cpu cycles get burned:
loop:
turn border color to red
if blitter busy then loop
turn border color to normal
page 75 of the manual:
command data port
"acess to this port when the status TR bit is 0 while command is being executed will result in an output of WAIT signal."
so the z80 is waited and dont memory refresh anymore?
better wait for the blitter in software.
Yes the wait is connected. The command data port is used for blit commands from CPU<->VDP (Like command LMMC).The TR bit is the 'data tranfer ready bit'. If you try to send the data to fast to the v9990 it will activate the wait.. That is a wait to let the v9990 process the byte written to the command data port. Not the completion of the whole command.
Nice article! It's still not clear to me how they created that 3rd plane with the moon. How was it made static? Normally, it should just scroll along with the 2nd plane.
it needs to be moved against the scroll register.
there are two horizontal adjust registers 0..15 for 6 bitplanes.
either there are 16 pics in memory, shifted pics, or it is blitted. some 25% of blitter budget.
16 times in memory is some 128k, 25% of vram.
Three first levels fully completed, Level 5 and 6 gfx port ongoing, new menu with gfx, that were not released
on the original has been developped.
The main issue is to find somebody that can convert the level 3 and 5 music tracks since I’m a bad musician maybe I can release a demo end of the year since everything is already coded (engine, level editor ...)
Concerning the music port to opl4:
Maggoo tryed to help me with the help of one of his friend who has ported three tracks already (atomishing work from that guy), by the way,
I really want to thanks this guy (I don’t know who he his and I hope he is reading this comment) but apparently, he is not available anymore so ...
If anybody want to be part of this journey, I’m hiring
Hi Mumbly, that would be me. I'm still available. Communication just faded. Could be partly from my side since I've got a lot on my head.
From what I remember the aim was to fit it into a 2MB ROM. It's just that the samples for the music take a lot of room. To keep the rest of the music in par with what's already there more space would be required (running from mass storage media?).
Last mail I received was about AAF (iirc) files. I'd like to investigate the options on how to rebuild them in mbwave as 1:1 as possible.
And congratulations for what has been achieved so far, you are really a specialist in this domain, I've ported 2 simple loading music tracks and it was already complex to do, so I can understand your concern, by the way, one question did you changed or applied filters on the samples you have used in the tracks you have converted, yours are perfect, mines have minor issues at the attack and the release of the sound-> you know some kind of little pop sound like when you turn on an old hi-fi model
I will have certainly to go for a 4 meg memory mapper or trying to compress the MWK files like I do for the GFX (ratio 30%) with pletter.
To be honest, the samples are all taken straight from the MOD files except for the intro track. Those were so big and hard to handle that I kindly asked Wolf to make new samples for me based on the originals.
A way to avoid popping/clicking is channel switching. That's using two channels to play one. Every note will be played on the other channel than the previous. A bit like this:
__CH1_CH2
1 A#4 OFF
2 --- ---
3 OFF G#4
4 --- ---
5 F#4 OFF
This way a note will fade with the set release rate and be mute until the next note on event. Otherwise the note would've been cut off by the attack of the next note. The position of the sine of the previous note and the next note will almost never have a fluent transition, causing a click/plop sound.
One instrument is more sensitive to this than the other, so if not really necessary I abondon this technique cuz effectively it would halven my available channels.
I see you're in Belgium, so there's a 50-50 chance your prevered language is Dutch. Mine most certainly is Dutch (I could've explained the above in halve the words if I used Dutch). So how to address you in e-mail?
Well you can try Dutch I’m French speaker with notions of Dutch so I’ll do my best.
I got what you have explained, The problem occurs when the sample is sustained too long
So I presume it’s a sample loop issue. From time to time it’s at the attack time.
I’ll test your tip tomorrow
Thank you
Oh yes, sample looping... That's a thing... I've been taught to do that correctly by the only MSXer who can do it perfectly... 15 years ago... And I never did something with the skill cuz making custom samples for Moonsound is quite a hassle... It has nothing to do with the popping/clicking I mentioned (which is also easily achievable with a lot of the rom tones).
As you can see I can manage English, but your real name has a Dutch vibe, that's all... I'll contact you some day soon within a week.
your tips is functionning very well, I've just ported the level 1 loading track and a pop occured during a note transition, I used your tip and the pop disapeared
I tryed to change the sample with Audacity and, Indeed it's a pain in the ass and not effiscient all the time , there are, apparently different click and pops cases (peaks, cross zero …).
I'll send you back (reply on your mail) what has been archieved so far.
Best tool to create a looped sample with is Soundforge (at least, that's what I learned 15 years ago, while reviewing the below I think Vegas should be able to do the same). You can actually see where the loop should be by zooming deep enough and choosing two (end address and loop address) spots where the sine is about the same and pick the point matching the other. Then crossfade the loop to avoid too audible transitions. Having the time scale set to samples, you'll have the data you need in mbwave to set loop address and end address...
This is part of the theory I remember from long ago. If I need to make new samples I guess I better get me a steam course in looping again @ Wolf_ since there are a lot of tiny things to keep in mind.
@Wolf_
You're known for your musical skills and theories as well as having a very good way with words while writing articles. Maybe a course about making own waves is something you'd like to share with the scene in a wiki?
Commentaires (74)
Par Robby
Master (219)
26-01-2017, 12:40
Par Manuel
Ascended (19678)
26-01-2017, 13:10
Par Maggoo
Paragon (1218)
26-01-2017, 17:25
Par Grauw
Ascended (10821)
26-01-2017, 20:02
Par Manuel
Ascended (19678)
26-01-2017, 20:12
Par JohnHassink
Ambassador (5684)
18-09-2020, 13:04
Par Wolverine_nl
Paragon (1160)
27-01-2017, 10:03
Par syn
Prophet (2135)
18-09-2020, 13:05
Par meits
Scribe (6571)
27-01-2017, 17:59
Par Maggoo
Paragon (1218)
18-09-2020, 13:05
Par Joel Verdonck
Rookie (28)
23-02-2017, 01:59
Par Joel Verdonck
Rookie (28)
23-02-2017, 01:33
Par Joel Verdonck
Rookie (28)
23-02-2017, 01:56
Par msd
Paragon (1532)
23-02-2017, 07:50
Par Manuel
Ascended (19678)
23-02-2017, 21:18
Par yzi
Champion (444)
23-02-2017, 22:57
Par journey
Hero (577)
24-02-2017, 07:56
Par msd
Paragon (1532)
24-02-2017, 08:28
Par Jorito
Mr. Ambassadors (1803)
25-02-2017, 10:44
Par sd_snatcher
Prophet (3675)
24-02-2017, 22:41
Par Manuel
Ascended (19678)
25-02-2017, 11:49
Par meits
Scribe (6571)
25-02-2017, 17:14
Par Joel Verdonck
Rookie (28)
26-02-2017, 10:09
Par Joel Verdonck
Rookie (28)
26-02-2017, 10:31
Par Joel Verdonck
Rookie (28)
26-02-2017, 10:28
Par Joel Verdonck
Rookie (28)
26-02-2017, 10:41
Par meits
Scribe (6571)
26-02-2017, 13:28
Par Manuel
Ascended (19678)
26-02-2017, 16:52
Par Manuel
Ascended (19678)
02-03-2017, 22:16
Par syn
Prophet (2135)
03-03-2017, 00:15
Par msd
Paragon (1532)
03-03-2017, 10:14
Par Joel Verdonck
Rookie (28)
03-03-2017, 12:55
Par msd
Paragon (1532)
03-03-2017, 12:58
Par Joel Verdonck
Rookie (28)
03-03-2017, 13:34
Par iamweasel2
Paladin (722)
03-03-2017, 13:59
Par msd
Paragon (1532)
03-03-2017, 15:57
Par Joel Verdonck
Rookie (28)
03-03-2017, 17:24
Par Joel Verdonck
Rookie (28)
03-03-2017, 17:54
Par syn
Prophet (2135)
04-03-2017, 00:46
Par hit9918
Prophet (2932)
05-03-2017, 00:11
Par Maggoo
Paragon (1218)
05-03-2017, 04:26
Par sd_snatcher
Prophet (3675)
05-03-2017, 14:34
Par hit9918
Prophet (2932)
05-03-2017, 21:09
Par Joel Verdonck
Rookie (28)
06-03-2017, 10:58
Par hit9918
Prophet (2932)
06-03-2017, 18:08
Par fernando.collazo.5682
Champion (257)
07-03-2017, 03:54
Par Grauw
Ascended (10821)
07-03-2017, 19:02
Par Joel Verdonck
Rookie (28)
07-03-2017, 11:24
Par Joel Verdonck
Rookie (28)
07-03-2017, 16:08
Par hit9918
Prophet (2932)
07-03-2017, 21:16
Par hit9918
Prophet (2932)
08-03-2017, 01:12
Par Grauw
Ascended (10821)
08-03-2017, 17:53
Par msd
Paragon (1532)
08-03-2017, 22:00
Par Grauw
Ascended (10821)
08-03-2017, 22:21
Par Manuel
Ascended (19678)
08-03-2017, 22:22
Par sd_snatcher
Prophet (3675)
09-03-2017, 13:40
Par hit9918
Prophet (2932)
09-03-2017, 23:24
Par journey
Hero (577)
02-09-2017, 11:16
Par Mumbly
Expert (121)
03-09-2017, 23:09
Par journey
Hero (577)
04-09-2017, 06:40
Par journey
Hero (577)
18-04-2019, 16:44
Par Mumbly
Expert (121)
19-04-2019, 00:41
Par meits
Scribe (6571)
19-04-2019, 01:03
Par Mumbly
Expert (121)
19-04-2019, 12:13
Par meits
Scribe (6571)
19-04-2019, 13:53
Par Mumbly
Expert (121)
20-04-2019, 00:01
Par meits
Scribe (6571)
20-04-2019, 01:53
Par Mumbly
Expert (121)
20-04-2019, 23:27
Par Mumbly
Expert (121)
21-04-2019, 14:23
Par meits
Scribe (6571)
21-04-2019, 15:48
Par Manuel
Ascended (19678)
18-09-2020, 10:48
Par journey
Hero (577)
30-03-2021, 15:28
Par PingPong
Enlighted (4155)
30-03-2021, 20:46
Par meits
Scribe (6571)
30-03-2021, 22:35