IO, a new MSX1 demo by Logon System

Page 5/17
1 | 2 | 3 | 4 | | 6 | 7 | 8 | 9 | 10

By tonigalvez

Champion (280)

tonigalvez's picture

17-03-2015, 09:42

@Overflow, you have to meet ARTRAG, he is a brilliant coder and a very good person. We worked togeder on Uridium for MSX.

By hit9918

Prophet (2853)

hit9918's picture

17-03-2015, 14:13

Quote:

Toshiba HX-10 is a similar case: testing 71364 cpu-cycles, does not give a frame.
Definitely (bis): I cannot provide a patch for this.

@overflow, why are cycles per frame a critical thing?

Quote:

If it doesn''t work on all models, then there's something wrong...

When the cause is e.g. false slot coding i.e. no good reason, one can blame the coder.
But when one machine prevents the entire fleet from doing something, one got to start to wonder.

The 8280 with 228.5 cycles, funny, there exists only one 9938.
Does that thing maybe only happen with genlock enabled?

By mars2000you

Enlighted (5468)

mars2000you's picture

17-03-2015, 14:38

Quote:

The 8280 with 228.5 cycles, funny, there exists only one 9938.
Does that thing maybe only happen with genlock enabled?

I think it happens when genlock is present in the hardware. I remember some tests I've made in the past for dvik to help him in the development of blueMSX and one of his cdemos, some results were different for the NMS 8280 (by comparison with other MSX2's). Also other tests for flyguille when he was developing MNBIOS failed with the NMS 8280. I have indeed a real NMS 8280, that's why I can speak about that.

By Overflow

Resident (57)

Overflow's picture

17-03-2015, 15:11

hit9918 wrote:

@overflow, why are cycles per frame a critical thing?

Because my "running against the raster" style of programming, quote from sd_natcher in that thread.

Let's have the plasma as an example.
"192 split-screens" == "single line split-screen"
On each of the 192 lines from screen,
VDP R#2 and VDP R#3 are outed/changed dynamically.
To achieve this:
first, sync at the 1st line by testing bits 5S&C w/ 5+ sprites at Y=-1
then, a loop for 192 times: each roll from the loop is exactly 228 cpu-cycles long.

By Overflow

Resident (57)

Overflow's picture

17-03-2015, 15:23

Let's have the last scene as another example.
A big big loop, which is exactly 71364 cpu-cycles long. No sync, no wait for VBL.
All calls are performed on some part of code which always require the same amount of cpu-cycles:
- decrunching music and sending data to AY
- scrolling the text by page-flipping
- sending new lines of text to VRAM
- updating the splitrasters (those broken columns at screen)
- performing the splitrasters (basically: big loop, updating VDP R#7 6 or 7 times on each scanline, for 220+ scanlines)
...

By yzi

Champion (441)

yzi's picture

17-03-2015, 17:08

Overflow wrote:

Well, would you mind yzi to test this new build? Test on cpu frequency is less "sharp", this might work. Or not. Argh! I'm on compatibility issues since early December. :(

I tested it on both the Toshiba and the Canon, but it didn't work any better. I did it with Nowind because I don't think the real floppy drive had anything to do with it.

It would be interesting to see test results from other MSX1 machines, but I only have V-20, HX-10 and SVI-728. Anyone tried with Sony, Casio, Daewoo, GoldStar, Panasonic, Al Alamiah, etc. ...?

Maybe it would be possible to have a working set of cycle counts for each and every MSX1 model... ;) We've always toyed with the idea of supporting all possible MSX floppy drive models in order to make a fully working track loader that could play music while loading. The drive sync timings are done with CPU loops, so you'd have to have a custom driver, basically a floppy drive ROM BIOS replacement, for every drive model. Doable in theory maybe.

By Overflow

Resident (57)

Overflow's picture

17-03-2015, 17:32

yzi wrote:

It would be interesting to see test results from other MSX1 machines, but I only have V-20, HX-10 and SVI-728. Anyone tried with Sony, Casio, Daewoo, GoldStar, Panasonic, Al Alamiah, etc. ...?

From nfo.txt:
The demo won't run on (...)
- NMS8280 (number of cpu cycles on a scanline: not an integer? WTF!?)
(...)
The demo has been sucessfully tested on:
- openMSX (dev actually was made on openMSX Smile
- Philips VG8235 (MSX2) (my own computer)
- Canon V20 (MSX1)
- Philips VG8020 (MSX1)
- Yeno MX-64 (MSX1)
- Yashica YC-64 (MSX1)
- Sony HB501F (MSX1)
- Goldstar FC-200 (MSX1) (w/ bad sync at start)
- Sanyo PHC-28L (MSX1) (w/ glitch on plasma)
- Philips NMS 8245 (MSX2)
- Philips NMS 8255 (MSX2)
- Sanyo Wavy 35 (MSX2+)
- Panasonic A1WX (MSX2+)
- Panasonic A1WSX (MSX2+)
- Panasonic A1ST (TurboR)

Let's thank Le Riquet and Tom&Jerry for their machines. Smile

Again: it ran fine on the V20 I got, IO.COM run thru BEER IDE.

By yzi

Champion (441)

yzi's picture

17-03-2015, 17:48

There are subtle differences between models. Mine and Marq's V-20s do not work, and the HX-10 doesn't work. But my SVI-728 did work.

I think you'll need many more people helping, and dozens of tested models to get a reliable sample. Apparently, one sample of each model is not enough. I'm not an MSX hardware expert, but I wouldn't be surprised if the set of connected cartridges, floppy drive models etc. could change timings by a couple of cycles. Maybe I should re-check with SVI-728 + Nowind.

By yzi

Champion (441)

yzi's picture

17-03-2015, 18:26

I tested with 728+Nowind, and it does work. Though automatic reboot at end of demo doesn't seem to work. It did work with the real Sony floppy drive+controller.

By RetroTechie

Paragon (1534)

RetroTechie's picture

17-03-2015, 19:00

Overflow wrote:

The demo won't run on (...)
- NMS8280 (number of cpu cycles on a scanline: not an integer? WTF!?)

A scanline will only take a fixed # of CPU cycles on machines where CPU clock derives from the VDP clock. Cool And since VDP clock is 6x the MSX-standard 3.58 MHz, that might be X+1/6th, X+2/6th, X+3/6th etc CPU cycles (Read: an integer # of VDP clock cycles, not necessarily an integer number of CPU cycles).

On the NMS8280, VDP clock can vary freely within a small range (+/- a few % or so), to allow it to 'catch up' with an external video signal, until VDP runs synchronized with external video. IIRC, the Z80 doesn't follow this varying VDP clock, so its clock is generated separately.

Same goes for 7 MHz. (or Super Turbo Wink ) upgraded machines. And even with a stable CPU clock available from VDP, some MSX machines generate the Z80 clock separately anyway. In all these cases Z80 clock is "free running" w/ respect to VDP clock, and scanlines can take a non-integer, non-constant # of CPU cycles.

If you have a schematic for a particular machine, it's easy to see where the Z80 clock comes from.

Summarized: a constant CPU clock can NOT be relied upon (as has been true so often, for ages).

Page 5/17
1 | 2 | 3 | 4 | | 6 | 7 | 8 | 9 | 10