**New Release** REALMS OF QUEST 3 (available for order!)

Discussion, Reviews & High-scores

Moderator: Moderators

User avatar
Ghislain
Realms of Quest
Posts: 1286
Joined: Sun Aug 08, 2004 12:54 am

Post by Ghislain »

Centallica wrote:Very nice game and efforts!

I'll be placing my order when it arrives on the site :D

Will there be a "Made in Canada" sticker? :P
Thanks! No 'Made in Canada' sticker, although I did write a small chapter on the "History of Realms of Quest Trilogy" where my name and city (Calgary, Alberta, Canada) are appended at the end.
Disc Master I wrote:I am EXCITED about this game! I love old school RPGs and the games that come out today, for todays systems just don't hold my enthusiasm or attention. This is going to be one game that I will spend a lot of time playing. Unfortunately, I won't get to play III until I beat I & II first, but I am still looking forward to it and will buy a few copies to give to a few Commodore friends that I know will love to check the game out.

Looking forward to the release.
Thanks for your support! Realms I shouldn't take too long to solve, but Realms II is probably the most difficult of the series. The interface is a bit slow (80% BASIC) . I think you can go straight to playing Realms III which is really the game I've always wanted to make all along--the first two games were just part of the learning curve. Both Realms II and III really don't get "solved" per se, once you defeat the final boss, the games reset themselves and you start over again in a more difficult setting.

But by all means, do check out the first two games in the trilogy, which are included on the double sided disk. I even include an unfinished version of Realms II that I worked on in 1992-93 before abandoning it (works as an interesting demo, however). Also included is a complete anthology of every game that I ever did for the VIC-20 (which hasn't been lost). 20+ games in all.
"A slave is one who waits for someone to come and free him." -- Ezra Pound
User avatar
Ghislain
Realms of Quest
Posts: 1286
Joined: Sun Aug 08, 2004 12:54 am

Post by Ghislain »

Did a bit more work on the intro demo this week. Here is some nice melodramatic stuff that you'll see before the game starts:

Image
"A slave is one who waits for someone to come and free him." -- Ezra Pound
User avatar
Ghislain
Realms of Quest
Posts: 1286
Joined: Sun Aug 08, 2004 12:54 am

Post by Ghislain »

I'm working on a hi-res graphic for side 2 of the disk.

Image

I think that with a bit of compression (re-using space and reverse chars, and trying to find patterns of similarity) I should be able to fit this image on an unexpanded VIC-20.

The emulator screenshot is cropped because I'm using Mike's MINIGRAFIK to display it--but I'm going to use his routines to read PGM files and extract bytecode from them. It should all fit nicely on the VIC-20's 22x23 screen (I won't be using double height characters because of the compressed and re-used graphics data).
"A slave is one who waits for someone to come and free him." -- Ezra Pound
User avatar
Ghislain
Realms of Quest
Posts: 1286
Joined: Sun Aug 08, 2004 12:54 am

Post by Ghislain »

A bitmapped 22x23 screen on the VIC-20 needs 4048 of memory and have double character mode (bit 0 at 36867) enabled.

Image

I found a way to compress graphical data. What would normally take 4048 bytes has now been compressed down to 2554 bytes. I did this by writing a BASIC program that looks for 8x8 custom characters that match each other. For example a blank space is re-used as many times as possible. This is the routine that I used:

Code: Select all

1 print"S"
3 deffnp(x)=49152+y1*176+x1*8
5 c=0
10 fory1=00to22:forx1=0to21:geta$:ifa$<>
""thenstop
11 y=fnp(0)
80 p=c:gosub200
81 ::: printmid$(str$(p),2)",";
90 next:next
95 end
200 ifc=0then240
201 forh=0toc-1
202 fori=0to7
203 j=peek(19152+h*8+i)
204 k=peek(fnp(0)+i)
205 ifj<>kthen220
206 next
207 rem found one!
208 p=h:h=c:next:return
220 i=8:next:next
240 fori=0to7
241 poke19152+i+c*8,peek(fnp(0)+i):next
260 c=c+1:return
I basically used MIke's PGM converter in VICE in C64 mode -- stored the raw graphic data at 49152 and then I store the "compressed" data at 19152.

Here is the data for the full screen bit map image above:

Code: Select all

  @pic:
	.byte 0,0,0,0,0,0,0,0,0,0,0,0,0,1,3,2,19,55,39,71,207,...[snipped the rest -- this part is 2048 bytes]

  @poke:
	.byte 0,0,0,0,0,0,0,0,0,0,0,0,1,2,3,0,0,0,4,5,6,7,0,0,0,0,0,0,0,0,0,0,0,0,8,9
	.byte 10,0,0,11,12,13,14,15,0,0,16,17,18,19,20,21,22,23
	.byte 0,24,25,26,27,28,29,30,31,32,33,34,0,0
	.byte 35,36,37,38,39,40,41,42,0,43, [snipped the rest -- this part is 506 bytes]
@pic contains bitmap data, and @poke contains the character information that is to be POKEd (or STA in case of ML) to screen at 4096 (or 7680 in unexpanded mode).

That's right, I now have the tools that can allow me to create hi-res full screen graphics for the unexpanded VIC-20. Of course, I have to play around with the PGM a bit (trying to put in as much repetitive info as possible) but this is something that was only available for VIC users with memory expansion. And you can have full screen pictures _without_ having to use double size characters to boot.
"A slave is one who waits for someone to come and free him." -- Ezra Pound
User avatar
Pedro Lambrini
Vic 20 Scientist
Posts: 1132
Joined: Mon Dec 01, 2008 11:36 am

Post by Pedro Lambrini »

Those images are just magnificent...I'm so, so impressed by all of your work. It really does begger belief. Well done, bloke, well done. :)
"...That of the Eastern tribe being like a multitude of colours as if a rainbow had settled upon its brow..." Daniels 1:3
User avatar
Ghislain
Realms of Quest
Posts: 1286
Joined: Sun Aug 08, 2004 12:54 am

Post by Ghislain »

Pedro Lambrini wrote:Those images are just magnificent...I'm so, so impressed by all of your work. It really does begger belief. Well done, bloke, well done. :)
Thanks!

Today I was finalizing some D64 images and then I discovered a bug... by using POKE 808,100 to disable runstop/restore it affected the ML routine to save game to disk. So I'll have to find another way to disable runstop/restore.

I found the following from lemon64:

Code: Select all

POKE 788,49 Enable Syop Key and TI$ 
POKE 788,52 Disables Stop Key and TI$ 
POKE 792,193 disable RUN-STOP/RESTORE 
POKE 808,225:POKE 818,32 Disable Runstop/Restore & LIST 
POKE 808,234 disable RUN-STOP/RESTORE and LIST 
POKE 808,237:POKE 818,237 Enable Runstop/Restore & LIST 
POKE 808,239 disable RUN/STOP key
I'll try these out, but if anyone knows the 'safest' way to disable run/stop restore on the VIC-20, please let me know :)
"A slave is one who waits for someone to come and free him." -- Ezra Pound
carlsson
Class of '6502
Posts: 5516
Joined: Wed Mar 10, 2004 1:41 am

Post by carlsson »

All those POKEs change vectors to certain system and Basic functions. There is no real magic behind it, you just point the computer to execute a different function. That means you could try to find an entry point - perhaps it is enough with a RTS somewhere in memory - to redirect either of these vectors to. What people back in the day liked to do was to point the vectors to a place where strange things would happen if you tried to break, list or save the program.
Anders Carlsson

Image Image Image Image Image
User avatar
Mike
Herr VC
Posts: 5134
Joined: Wed Dec 01, 2004 1:57 pm
Location: Munich, Germany
Occupation: electrical engineer

Post by Mike »

These POKEs refer to the C64, and can't be used on a VIC-20, since the IRQ and NMI routines are located at different addresses.

On the VIC-20 'POKE 788,194' disables STOP, and the TI$ clock. Default is 'POKE 788,191'. Here's the start of the IRQ routine:

Code: Select all

.C:eabf   20 EA FF   JSR $FFEA ; update jiffy clock, and check STOP key
.C:eac2   A5 CC      LDA $CC
.C:eac4   D0 29      BNE $EAEF
.C:eac6   C6 CD      DEC $CD
.C:eac8   D0 25      BNE $EAEF
.C:eaca   A9 14      LDA #$14
.C:eacc   85 CD      STA $CD
.C:eace   A4 D3      LDY $D3
[...]
where 'POKE 788,194' simply omits the first JSR instruction.

To disable STOP/RESTORE, I divert the NMI vector at 792/793 to the following short routine:

Code: Select all

2C 11 91  BIT $9111   ; Acknowledge NMI 
40        RTI         ; End NMI 
Greetings,

Michael
User avatar
Ghislain
Realms of Quest
Posts: 1286
Joined: Sun Aug 08, 2004 12:54 am

Post by Ghislain »

Mike wrote:To disable STOP/RESTORE, I divert the NMI vector at 792/793 to the following short routine:

Code: Select all

2C 11 91  BIT $9111   ; Acknowledge NMI 
40        RTI         ; End NMI 
Greetings,

Michael
That works and doesn't interfere with my save routine--thanks!
"A slave is one who waits for someone to come and free him." -- Ezra Pound
User avatar
Ghislain
Realms of Quest
Posts: 1286
Joined: Sun Aug 08, 2004 12:54 am

Post by Ghislain »

I created a 6 minute video that demonstrates Realms III:

http://www.youtube.com/watch?v=Xe4RQBaLYnQ
"A slave is one who waits for someone to come and free him." -- Ezra Pound
User avatar
Ghislain
Realms of Quest
Posts: 1286
Joined: Sun Aug 08, 2004 12:54 am

Post by Ghislain »

Posted a second video where the video and sound are more 'in sync' to what is happening in the actual game.

http://www.youtube.com/watch?v=1DMBlCaDlD8
"A slave is one who waits for someone to come and free him." -- Ezra Pound
User avatar
Ghislain
Realms of Quest
Posts: 1286
Joined: Sun Aug 08, 2004 12:54 am

Post by Ghislain »

I actually corrected a few minor bugs. These weren't showstoppers or anything, it's just that the 'active' character would switch to another at the end of a battle, sometimes. I think I was able to correct this.

I tested the demo intro's music on a real VIC-20--it sounded very distorted and blurry. I then adjusted the volume setting at 36878 from 15 down to 5 and it sounds much, much better. Subsequently, I think I'll adjust the main game music volume from 15 to 10 so that it sounds better on the real hardware.
"A slave is one who waits for someone to come and free him." -- Ezra Pound
carlsson
Class of '6502
Posts: 5516
Joined: Wed Mar 10, 2004 1:41 am

Post by carlsson »

Oh yes. I have pointed it out several times, but when you use two or more sound channels for music, anything beyond volume level 7 tends to sound distorted. Maximum volume is great for sound effects but that's it.
Anders Carlsson

Image Image Image Image Image
User avatar
Ghislain
Realms of Quest
Posts: 1286
Joined: Sun Aug 08, 2004 12:54 am

Post by Ghislain »

carlsson wrote:Oh yes. I have pointed it out several times, but when you use two or more sound channels for music, anything beyond volume level 7 tends to sound distorted. Maximum volume is great for sound effects but that's it.
The problem does not appear at all in VICE, however. So I was a bit discouraged when I was testing the 3-channel music intro on the real hardware. I thought that perhaps it was because of low notes, but I would have to cut off everything below POKE 3687x,190 or so to get rid of the distortion.

Then I played the "Robotic Liberation" demo (on the mega cart) and I didn't notice any distorts, and then thought "what if I just turned down the volume at 36878?".

So I set it to 5 (just an arbitrary pick) and it sounds very nice, just like in emulation. The problem was not very apparent in the 2-channel music that plays during the main game program, but I lowered the volume to 10 just in case.

As for the overall status of the project, nothing much else to do from my end, save for implementing a screen that saehn is designing and possibly, Pedro Lambrini's "Ultima-like" map that he wants to do for the manual.

The personal excitement for this project really peaked for me in the April-June period where I spent every waking hour (outside of work) on this thing. The last few weeks were not as fun because I spent most of the time polishing everything (the manual, the in-game menus, etc) for a commercial-grade release. I even wrote a 2-page "VIC-20 autobiography" about my various attempts at creating a big RPG for the C64 and finally, the VIC-20. I also dedicate 4 pages of the manual to provide a brief description and a screenshot for every VIC-20 that I ever made (which are on side 2).

The double sided disk is chock full of stuff--there are only "50 blocks free" on side 1 (4 versions of Realms III, a transfer utility and a 16K demo/intro) and about 100 blocks free on side 2. I think it was a good decision to not limit myself to the constraints of a cartridge release, although I was grateful for the members here who offered to help me with making this if I wanted to. A disk release allows me to work with 340 kilobytes.
"A slave is one who waits for someone to come and free him." -- Ezra Pound
carlsson
Class of '6502
Posts: 5516
Joined: Wed Mar 10, 2004 1:41 am

Post by carlsson »

I shouldn't nit pick, but a floppy disk "only" holds 166K of user data per side, total of 332K unless you use part of the directory track for your own data. The 170K figure is including track 18. Actually since each sector holds 254 or fewer bytes, you only get a little over 164K left. It is just like modern day hard drives, advertised in unformatted capacity and multiples of 1000 while operating systems rather use multiples of 1024, making people think they were cheated by several gigabytes. 8)

On the other hand if you had made a 32K cartridge release, there had not been any need for two different versions.
Anders Carlsson

Image Image Image Image Image
Post Reply