News:

Printed Amstrad Addict magazine announced, check it out here!

Main Menu

Amstrad CPCnext: Would you buy one?

Started by cwpab, 20:29, 31 December 23

Previous topic - Next topic

0 Members and 2 Guests are viewing this topic.

Do you wish there was an Amstrad CPCnext?

Yes, and I would buy it
22 (43.1%)
Yes, but I would not buy it
2 (3.9%)
No, that wouldn't be an Amstrad CPC
26 (51%)
I would prefer a PCWnext
1 (2%)

Total Members Voted: 51

GUNHED

#125
Here my English text of the Nova expansion:

Nova - English
==============

Nova nvRAM and Real-Time-Clock expansion
========================================
Shinra HP : https://pulkomandy.github.io/shinra.github.io/nova.html
Wiki-Forum: https://www.cpcwiki.eu/forum/amstrad-cpc-hardware/nova-nvram-rtc-for-amstrad-cpc-latest-news-from-pulkotronics/
SchemaNova: http://pulkomandy.tk/drop/nova_cpc_nvram.pdf
PulkoMandy: https://pulkomandy.tk/drop/

Technicals
==========
This interface includes 32KB of NVRAM and a real-time-clock
(because NVRAM chips have that).

nrRAM/RTC chip: M48T35Y-70MH1F.
The yellow chip itself tells: ST9906, M4T28, BR125H1
This is the M4T28 BR125H1 battery with 4 pins. Clickable.

Port
----
The interface uses port &FE82 for mapping the NVRAM in and out.
It is possible to map it at any multiple of &2000.

Decoding and Programming of the Nova
====================================
Base address of the nvRAM
-------------------------
The high 4 bits determine the base address of the nvRAM.
Bits 7, 6 and 5 select the RAM address. Bit 4 is set to 0.

 OUT &FE82,&0x   / to map at &0000-&1FFF
(OUT &FE82,&1x) /
 OUT &FE82,&2x   / to map at &2000-&3FFF
(OUT &FE82,&3x) /
 OUT &FE82,&4x   / to map at &4000-&5FFF
(OUT &FE82,&5x) /
 OUT &FE82,&6x   / to map at &6000-&7FFF
(OUT &FE82,&7x) /
 OUT &FE82,&8x   / to map at &8000-&9FFF - \ used for FutureOS
(OUT &FE82,&9x) /                           \OUT &FE82,&8B
 OUT &FE82,&Ax   / to map at &A000-&BFFF
(OUT &FE82,&Bx) /
 OUT &FE82,&Cx   / to map at &C000-&DFFF
(OUT &FE82,&Dx) /
 OUT &FE82,&Ex   / to map at &E000-&FFFF
(OUT &FE82,&Fx) /

The enabled NVRAM replaces 8KB of RAM/ROM with its own contents.

Select the 8 KB block of nvRAM
------------------------------
The low 4 bits select the 8KB page.
Bits 3(=1), 1 and 0 do the selection actually.

OUT &FE82,x8 ' map the first  8 KB page
OUT &FE82,x9 ' map the second 8 KB page
OUT &FE82,xA ' map the third  8 KB page
OUT &FE82,xB ' map the fourth 8 KB page (contains RTC)

Switch nvRAM off
----------------
Any other value for the 4 low bits unmaps the NVRAM
and restores the normal RAM or ROM behavior.
Examples: OUT &FE82,&FE or LD A,&FE:OUT (&82),A


Real-Time-Clock
===============
In the fourth page, the last 8 bytes are not normal RAM.
They can be used to read / write the time from the realtime clock.
In the other pages 1-3 there is only RAM.

All values are in BCD format (4 bits for tenths, 4 bits for units)
The data of the RTC can always be read.

Access to the RTC works this way
--------------------------------
Using OUT &FE82,&6B, interface mapped at &6000-&7FFF:

To read the time
----------------
POKE &7FF8,&40  'stops RTC->nvRAM update / write '1' to Read bit 6 (x1xx xxxx)
        'However, looks like this command is usually not needed

year    = PEEK(&7FFF)
month   = PEEK(&7FFE)
day     = PEEK(&7FFD)
weekday = PEEK(&7FFC)
hour    = PEEK(&7FFB)
minute  = PEEK(&7FFA)
second  = PEEK(&7FF9)

POKE &7FF8,&00 \  nvRAM get updated from RTC again
                \ Write '0' to Read bit 6 (x0xx xxxx)

To set the time
---------------
POKE &7FF8,&80 'Stop RTC for writing data into it / '1' to Write bit 7 (1xxx xxxx)

POKE &7FFF,&21 ' year, for 2021
POKE &7FFE,&07 ' month, july
POKE &7FFD,&31 ' day, 31st
POKE &7FFC,&00 ' weekday, Sunday
POKE &7FFB,&15 ' hour
POKE &7FFA,&53 ' minute
POKE &7FF9,&12 ' second

POKE &7FF8,&00 'RTC picks up new data, start RTC / '0' to Write Bit 7 (0xxx xxxx)

Switch Nova RTC off - save power
--------------------------------
To stop Nova RTC function and save current a bit is set.
The STOP bit is the MSB of the seconds register.
Setting it to a '1' stops the oscillator.
The M48T35/Y is shipped with the STOP bit set to a '1.'
When reset to a '0,' the M48T35/Y oscillator starts within 1 second.

In our example this is: POKE &7FF9,%1xxx xxxx
This stops the Nova RTC and saves power.



Compare Nova RTC and FutureOS Time/Date variables
-------------------------------------------------
Second  = &9FF9 - Second  - UHR_SEK EQU &B95B
Minute  = &9FFA - Minute  - UHR_MIN EQU &B95C
Hour    = &9FFB - Hour    - UHR_STU EQU &B95D
Weekday = &9FFC - Weekday - UHR_WOT EQU &B95E
Day     = &9FFD - Day     - UHR_TAG EQU &B95F
Month   = &9FFE - Month   - UHR_MON EQU &B960
Year    = &9FFF - Year    - UHR_JAR EQU &B961


http://futureos.de --> Get the revolutionary FutureOS (Update: 2023.11.30)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> Get the RSX-ROM for LambdaSpeak :-) (Updated: 2021.12.26)

Cwiiis

Quote from: Anthony Flack on 11:40, 05 February 24I mean, don't think I haven't thought about it. I've thought about splitting colours in the background, and I've thought about multiplexing the bombs... I want to believe!

I think multiplexing the bombs is just too much and they will have to be printed to the background, or else expect some major sprite flickering to occur. I also would want to use two sprites to add extra colours to the top HUD. I think some limited colour splitting could be applied in mode 1, but there would only be one floating colour and you'd be limited to a few simple line splits. it's an open question whether that would look better or worse than a mode 0 background with accurate colour. The background is not so bad, but it is a bummer to see the bombs rendered chunky, because then you can see they are rendered to the background. There's enough sprites left over that the little 200 points indicators left behind when you collect a bomb could be sprites. All the other sprites should look nearly arcade perfect.

The Master System, since that's our benchmark, has enough sprites to cover all the moving objects, same as the GX. But they'd flicker more often with only four per line. It would also not have enough tile memory to display the backgrounds, and it would blow up the tile memory even worse if you hoped to print the bombs on top without square borders. Worse is that it doesn't have anywhere near the vertical screen resolution and might have to use a vertical scroll like they did for Ms Pac Man. I love the SMS but it is quite stubby, especially in PAL mode.

Also the AY sound chip in the CPC is the same as the arcade board (which admittedly does have three of them. Heck they sounded pretty great in Gyruss when they stacked five of them together). So ok, maybe your hypothetical CPC Next could have double sound chips. But even just one AY gets pretty close to the arcade sound and is better than the SN chip in the SMS which has no bottom notes.
If you're looking to have 3xAY, the PlayCity would do the job - that gives you another 2xAY and you can externally mix them with the onboard AY (or internally in a pre-Plus machine, but mono only I think?). If it's easy to gracefully fall back, might be nice to add support for it? Alcon 2020 did this, though the split of music and sound effects was an obvious one, but I'm guessing your game already blends the two so maybe not such an easy thing to add...

Re a Plus-enhanced port, I wonder if using sprites for all the moving components is actually the most effective use of them, given you already have great-looking 50Hz gameplay working? Perhaps it'd make (some) sense to use sprites for the platforms - it'd be very easy to multiplex in that case as they're mostly identical and you'd have 256 pixels wide worth of sprites per scanline, so they could easily fill the playfield. That could potentially remove some colour restriction elsewhere and give nice-looking platforms. Sprites could also be used for the UI, I suppose, enabling a few more colours/resolution there, and perhaps for bonus indicators - anything that doesn't need to change too often. Of course, this wouldn't ease the RAM burden and you'd end up with a port that runs on even fewer computers... But it'd run on my computer ;D

Anthony Flack

I don't think I could multiplex platform sprites and render software sprites at the same time... I already spend most of the screen time drawing. Interesting idea though. Always fun trying to think of how you can stretch the hardware around something.

It would not be difficult to split music and sound effects if I had access to more channels but I do not have any idea how to go about it and I don't have a PlayCity to test on. I'm just using Arkos Tracker for the sound and perhaps it supports it natively; I haven't looked into that. The first snag I'm likely to hit is that the memory bank that holds the music data and Arkos player is full all the way up to &3FFF so I'd have to shuffle a bunch of things around if the Arkos player got any bigger. 

Cwiiis

Quote from: Anthony Flack on 01:46, 14 February 24I don't think I could multiplex platform sprites and render software sprites at the same time... I already spend most of the screen time drawing. Interesting idea though. Always fun trying to think of how you can stretch the hardware around something.

It would not be difficult to split music and sound effects if I had access to more channels but I do not have any idea how to go about it and I don't have a PlayCity to test on. I'm just using Arkos Tracker for the sound and perhaps it supports it natively; I haven't looked into that. The first snag I'm likely to hit is that the memory bank that holds the music data and Arkos player is full all the way up to &3FFF so I'd have to shuffle a bunch of things around if the Arkos player got any bigger.

In case you consider giving it a go, programming info is here: https://www.cpcwiki.eu/index.php/PlayCity - It's supported in the CPCEC emulator (that also has a pretty decent debugger) and I suppose you could still purchase one from @TotO (?) if you wanted to test on real hardware. It probably wouldn't make a huge amount of sense to use all 9 channels, rather than using 6 of them - As I understand it, the Play2CPC (which is likely more common?) only provides another 3 channels, as opposed to another 6 like the PlayCity. The PlayCity is supported in Arkos Tracker 2, iirc.

Maybe hardware sprites replacing software sprites is the most obvious thing in that case, with bombs remaining software sprites, as you've suggested. There's more than enough time to update every hardware sprite frame over 3 or 4 frames and leave plenty of time for game logic. More colourful game sprites and a lower RAM requirement would be a nice little bonus for Plus/GX owners :)

I wonder if you could squeeze in EGX backgrounds with the time saved by not having to manage software sprites... That would certainly be ambitious and interesting... Failing that, perhaps a Paula's Potions style alternating background to get some more colours would be feasible...

Prodatron

Quote from: Anthony Flack on 01:46, 14 February 24It would not be difficult to split music and sound effects if I had access to more channels but I do not have any idea how to go about it and I don't have a PlayCity to test on. I'm just using Arkos Tracker for the sound and perhaps it supports it natively; I haven't looked into that. The first snag I'm likely to hit is that the memory bank that holds the music data and Arkos player is full all the way up to &3FFF so I'd have to shuffle a bunch of things around if the Arkos player got any bigger.
PlayCity is only supported by the MultiPSG-Version of the Arkos AKY-Player. AKY is a streamed-based music format similair to YM, which uses more memory than usual modules. If you already use the AKY-variant it should be easy to add PlayCity support.

GRAPHICAL Z80 MULTITASKING OPERATING SYSTEM

Anthony Flack

I used AKG. No memory for AKY. A cartridge version would be a different story of course. I think the best thing for a Plus enhanced version would be a total rebuild. But obviously whole chunks of code could be copied straight across.

I am looking forward to playing with the Plus features and cartridge format when I actually have some time to do so. 

genesis8

PlayCity is also supported by Roudoudou's emulator : ACE-DL
____________
Amstrad news site at Genesis8 Amstrad Page

Powered by SMFPacks Menu Editor Mod