Wizard's Lair - [raxiss]

Want to talks about games you like, would like to see developed on the Oric, it's here.
User avatar
Dbug
Site Admin
Posts: 4742
Joined: Fri Jan 06, 2006 10:00 pm
Location: Oslo, Norway
Contact:

Re: Wizard's Lair - [raxiss]

Post by Dbug »

rax wrote: Mon Aug 12, 2024 9:23 am However, I couldn’t get the story text to look good in this tirst TAP file, so the files remained as they are now.
(...)
If you have any good ideas, I would gladly try them out. :)
Well, there are things doable in 2024 that would have been difficult in 1985, so technically what can be done is:
- We can use file compression to reduce the loading time
- We can also use multiple files loaded one after another

So a possibility (that would require some work, but quite doable) would be for example to split the loading of the main game in multiple blocks, and have the loader show the story during the loading.

Example:
You split the Wizar'd Lair title image in 4 slices, and compress each of them with FilePack
image_2024-08-12_103942887.png
image_2024-08-12_103942887.png (130.94 KiB) Viewed 2981 times
You compress the game with FilePack, and split the result in 4 blocks

- The Loader starts by switching to HIRES, loads the redefined charset and prints in the 3 lines of text the "Our adventure begins..." or something
- The loader loads the "Wizard's" part in memory, depacks it to HIRES, and update the story message at the bottom
- The loader loads the first part of the game, and update the story message at the bottom
- The loader loads the "Lair" part in memory, depacks it to HIRES, and update the story message at the bottom
- The loader loads the second part of the game, and update the story message at the bottom
- The loader loads the "bottom" part in memory, depacks it to HIRES, and update the story message at the bottom
- The loader loads the third part of the game, and update the story message at the bottom
- The loader loads the "red eyes" part in memory, depacks it to HIRES, and update the story message at the bottom
- The loader loads the fourth part of the game, and update the story message at the bottom
- The loader depacks the entire game from the four blocks and starts the game

Depacking a whole game with limited amount of memory can be challenging, so technically the same thing but without having the game compressed would still work: You get the image loading and the game loading by small bits that allow you to show the story while loading :)
User avatar
rax
Flying Officer
Posts: 200
Joined: Tue Jul 24, 2018 3:16 pm

Re: Wizard's Lair - [raxiss]

Post by rax »

I found some free time to experiment with the idea.

I divided the main screen into four parts and placed them in four different files.

I decided to try loading the files directly onto the screen (just for the experiment; the files can be compressed later). I also added text between each loading.

I created a second version, where I loaded the parts in a random order. It turned out not to be very successful, and there were also artifacts during the loading, which I didn't try to fix since this version is not viable.




The three lines of space are quite limited. I could either divide the image into more parts or try loading the text directly onto the graphic page and then replacing it with parts of the image.

I'm not really sure if the loading time is that critical and whether it makes sense to try to reduce it as much as possible, or if I should focus more on making the text look better on the screen, even if it increases the loading time (which I also didn't manage to achieve :) ).
User avatar
Symoon
Archivist
Posts: 2442
Joined: Sat Jan 14, 2006 12:44 am
Location: Paris, France

Re: Wizard's Lair - [raxiss]

Post by Symoon »

Maybe you can first load the story written on the HIRES screen, at the bottom (the HIRES screen area allowing any font you'd like).
Not making it too high will reduce the loading time.

Then you load the whole picture, which will crush the text after a while once loaded.

Well, the only problem is all that, is that this will be fine on real Orics, but will be very fast on emulators or on TAP reading devices ;)

EDIT: I should read first :D
The three lines of space are quite limited. I could either divide the image into more parts or try loading the text directly onto the graphic page and then replacing it with parts of the image.
User avatar
Dbug
Site Admin
Posts: 4742
Joined: Fri Jan 06, 2006 10:00 pm
Location: Oslo, Norway
Contact:

Re: Wizard's Lair - [raxiss]

Post by Dbug »

rax wrote: Tue Aug 13, 2024 12:28 pm I'm not really sure if the loading time is that critical and whether it makes sense to try to reduce it as much as possible, or if I should focus more on making the text look better on the screen, even if it increases the loading time (which I also didn't manage to achieve :) ).
Well, the way I make my Oric stuff is that I develop it all on emulator, but I try to make the experience as nice as possible for someone who would use the real vintage hardware.

So in the case of a TAPE game, imagine making a real physical version of Wizard's Lair to load on the Oric with a tape deck, like if it was in 1984.

It's a lot of work, it's technically not really necessary, but it's cool when it works :)
User avatar
rax
Flying Officer
Posts: 200
Joined: Tue Jul 24, 2018 3:16 pm

Re: Wizard's Lair - [raxiss]

Post by rax »

Symoon wrote: Tue Aug 13, 2024 12:46 pm ....
I tried to split the image and text into 25 parts and load them one after the other to create a sense of interactivity. However, it turned out that we need to be patient while the initial screen loads and we reach the actual game. :)


Dbug wrote: Tue Aug 13, 2024 1:03 pm ...
This is an idea I was also considering – to make a physical copy of the game. It turned out that this is almost as complicated as writing it. But overall, the user experience really needs to be good for the end user. One of the reasons I have two separate files is so that the game can load without the initial file.

I made several attempts to play on a real ORIC, and the experience was good (unless we play on a too large TV, where everything gets pixelated).
User avatar
Symoon
Archivist
Posts: 2442
Joined: Sat Jan 14, 2006 12:44 am
Location: Paris, France

Re: Wizard's Lair - [raxiss]

Post by Symoon »

Ha ha, yes 3 minutes is a bit slow! Unless you consider it's an "intro" (1st side of the tape for instance), and that the main game is on side 2. Then loading time is less important, since the user can skip the intro once he's seen it.

With this system, you actually load the story HIRES screen two times (as each line is loaded twice: 1st when it appears, then when it remains visible).
If you want to stick to this "scroll" idea, you could
1- load some code + the (compressed?) hires text with black ink and background attributes, so the text can't be seen
2- load each picture segment then change the black ink to white ink, so the next line is displayed quickly after each segment

This might be a little bit faster. since you wouldn't load the text 2 times.
User avatar
Dbug
Site Admin
Posts: 4742
Joined: Fri Jan 06, 2006 10:00 pm
Location: Oslo, Norway
Contact:

Re: Wizard's Lair - [raxiss]

Post by Dbug »

Having two sides, one with the intro and one with the game is actually a good idea and quite a few Oric games did that back then (like "Le Diamant de l'île maudite" or "Le Secret du Tombeau").

Combined with compression, you could get the game load much faster.

I did a quick test:

Code: Select all

D:\Wizard'sLair>%osdk%\bin\FilePack roguelike-1v01.tap roguelike-1v01.tap.pak

Delta value: 137

D:\Wizard'sLair>dir

09-Aug-24  18:14            48,862 roguelike-1v01.tap
14-Aug-24  07:32            27,565 roguelike-1v01.tap.pak
               2 File(s)         76,427 bytes
That complete game size goes from 48k to 27k.

The tricky part about depacking is that after a certain size you need to "decompress on yourself", which in general is something like that:
- Assemble the program to run at address X and compress it
- Load the program at address X+offset
- Decompress from X+offset to X, hopping that by the time you reach the end it will not get overlapped and corrupted

In your case the ideal setup would be to have the file loaded toward the end of the memory and install it in $500 (or $400 but that would make it hard to transfer to disk).
User avatar
rax
Flying Officer
Posts: 200
Joined: Tue Jul 24, 2018 3:16 pm

Re: Wizard's Lair - [raxiss]

Post by rax »

I made another attempt at the game's start screen. Here, I tried generating the text directly on the graphical page. The file size is about 15KB. I haven't tried to compress the file yet.



p.s.
It's amazing how always scrolling the graphics page feels like a lag. I tried several different asm approaches and none gave good success.
User avatar
Dbug
Site Admin
Posts: 4742
Joined: Fri Jan 06, 2006 10:00 pm
Location: Oslo, Norway
Contact:

Re: Wizard's Lair - [raxiss]

Post by Dbug »

That's basically the same issue I encountered in "Buggy Boy", which I tried to optimize in this article.
User avatar
ibisum
Wing Commander
Posts: 1758
Joined: Fri Apr 03, 2009 8:56 am
Location: Vienna, Austria
Contact:

Re: Wizard's Lair - [raxiss]

Post by ibisum »

rax wrote:It's amazing how always scrolling the graphics page feels like a lag. I tried several different asm approaches and none gave good success.
I'd quite like to hear about your adventures in the different asm approaches .. as I'm sure would a lot of us..
User avatar
Chema
Game master
Posts: 3081
Joined: Tue Jan 17, 2006 10:55 am
Location: Gijón, SPAIN
Contact:

Re: Wizard's Lair - [raxiss]

Post by Chema »

It is very frustraring to see how long it takes to scroll the screen... even if scrolling hall of it, the Oric would struggle to keep it at 50Hz.

Horizontally is eve worse.

Meanwhile, many Spectrum games have pixel scroll at decent speeds (e.g. Cobra, Uridium, Light Force,...) just using the CPU.
User avatar
rax
Flying Officer
Posts: 200
Joined: Tue Jul 24, 2018 3:16 pm

Re: Wizard's Lair - [raxiss]

Post by rax »

Yes, I find it really surprising and strange how scrolling is so slow on the Oric. I also notice the fast bitwise scrolling on the ZX Spectrum — how the game runs smoothly, and on top of that, there's still time for the game logic. I think the screen scrolling on the Oric is even slower than on the Apple II.

Here’s one of the attempts at scrolling. It’s implemented using a partially unrolled procedure, with a loop only along the X-axis. It’s obviously a bit faster, as seen from the length of the clip — one is 1:47, and the other is 1:17 (in both examples, the maskable interrupt is disabled). There’s a noticeable wavy vertical misalignment due to the way the screen is copied and refreshed.




The code is nothing special, but it's the fastest I know:

Code: Select all

_scrollPage
    ldx #39

loop

    lda $a000 + 40 + 0 * 40,x
    sta $a000 + 0 * 40,x
    lda $a000 + 40 + 1 * 40,x
    sta $a000 + 1 * 40,x
    lda $a000 + 40 + 2 * 40,x
    sta $a000 + 2 * 40,x
    lda $a000 + 40 + 3 * 40,x
    sta $a000 + 3 * 40,x
    lda $a000 + 40 + 4 * 40,x
    sta $a000 + 4 * 40,x
    lda $a000 + 40 + 5 * 40,x
    sta $a000 + 5 * 40,x
    lda $a000 + 40 + 6 * 40,x
    sta $a000 + 6 * 40,x
    lda $a000 + 40 + 7 * 40,x
    sta $a000 + 7 * 40,x
    lda $a000 + 40 + 8 * 40,x
    sta $a000 + 8 * 40,x
    lda $a000 + 40 + 9 * 40,x
    sta $a000 + 9 * 40,x
    lda $a000 + 40 + 10 * 40,x
    sta $a000 + 10 * 40,x
    lda $a000 + 40 + 11 * 40,x
    sta $a000 + 11 * 40,x
    lda $a000 + 40 + 12 * 40,x
    sta $a000 + 12 * 40,x
    lda $a000 + 40 + 13 * 40,x
    sta $a000 + 13 * 40,x
    lda $a000 + 40 + 14 * 40,x
    sta $a000 + 14 * 40,x
    lda $a000 + 40 + 15 * 40,x
    sta $a000 + 15 * 40,x
    lda $a000 + 40 + 16 * 40,x
    sta $a000 + 16 * 40,x
    lda $a000 + 40 + 17 * 40,x
    sta $a000 + 17 * 40,x
    lda $a000 + 40 + 18 * 40,x
    sta $a000 + 18 * 40,x
    lda $a000 + 40 + 19 * 40,x
    sta $a000 + 19 * 40,x
    lda $a000 + 40 + 20 * 40,x
    sta $a000 + 20 * 40,x
    lda $a000 + 40 + 21 * 40,x
    sta $a000 + 21 * 40,x
    lda $a000 + 40 + 22 * 40,x
    sta $a000 + 22 * 40,x
    lda $a000 + 40 + 23 * 40,x
    sta $a000 + 23 * 40,x
    lda $a000 + 40 + 24 * 40,x
    sta $a000 + 24 * 40,x
    lda $a000 + 40 + 25 * 40,x
    sta $a000 + 25 * 40,x
    lda $a000 + 40 + 26 * 40,x
    sta $a000 + 26 * 40,x
    lda $a000 + 40 + 27 * 40,x
    sta $a000 + 27 * 40,x
    lda $a000 + 40 + 28 * 40,x
    sta $a000 + 28 * 40,x
    lda $a000 + 40 + 29 * 40,x
    sta $a000 + 29 * 40,x
    lda $a000 + 40 + 30 * 40,x
    sta $a000 + 30 * 40,x
    lda $a000 + 40 + 31 * 40,x
    sta $a000 + 31 * 40,x
    lda $a000 + 40 + 32 * 40,x
    sta $a000 + 32 * 40,x
    lda $a000 + 40 + 33 * 40,x
    sta $a000 + 33 * 40,x
    lda $a000 + 40 + 34 * 40,x
    sta $a000 + 34 * 40,x
    lda $a000 + 40 + 35 * 40,x
    sta $a000 + 35 * 40,x
    lda $a000 + 40 + 36 * 40,x
    sta $a000 + 36 * 40,x
    lda $a000 + 40 + 37 * 40,x
    sta $a000 + 37 * 40,x
    lda $a000 + 40 + 38 * 40,x
    sta $a000 + 38 * 40,x
    lda $a000 + 40 + 39 * 40,x
    sta $a000 + 39 * 40,x
    lda $a000 + 40 + 40 * 40,x
    sta $a000 + 40 * 40,x
    lda $a000 + 40 + 41 * 40,x
    sta $a000 + 41 * 40,x
    lda $a000 + 40 + 42 * 40,x
    sta $a000 + 42 * 40,x
    lda $a000 + 40 + 43 * 40,x
    sta $a000 + 43 * 40,x
    lda $a000 + 40 + 44 * 40,x
    sta $a000 + 44 * 40,x
    lda $a000 + 40 + 45 * 40,x
    sta $a000 + 45 * 40,x
    lda $a000 + 40 + 46 * 40,x
    sta $a000 + 46 * 40,x
    lda $a000 + 40 + 47 * 40,x
    sta $a000 + 47 * 40,x
    lda $a000 + 40 + 48 * 40,x
    sta $a000 + 48 * 40,x
    lda $a000 + 40 + 49 * 40,x
    sta $a000 + 49 * 40,x
    lda $a000 + 40 + 50 * 40,x
    sta $a000 + 50 * 40,x
    lda $a000 + 40 + 51 * 40,x
    sta $a000 + 51 * 40,x
    lda $a000 + 40 + 52 * 40,x
    sta $a000 + 52 * 40,x
    lda $a000 + 40 + 53 * 40,x
    sta $a000 + 53 * 40,x
    lda $a000 + 40 + 54 * 40,x
    sta $a000 + 54 * 40,x
    lda $a000 + 40 + 55 * 40,x
    sta $a000 + 55 * 40,x
    lda $a000 + 40 + 56 * 40,x
    sta $a000 + 56 * 40,x
    lda $a000 + 40 + 57 * 40,x
    sta $a000 + 57 * 40,x
    lda $a000 + 40 + 58 * 40,x
    sta $a000 + 58 * 40,x
    lda $a000 + 40 + 59 * 40,x
    sta $a000 + 59 * 40,x
    lda $a000 + 40 + 60 * 40,x
    sta $a000 + 60 * 40,x
    lda $a000 + 40 + 61 * 40,x
    sta $a000 + 61 * 40,x
    lda $a000 + 40 + 62 * 40,x
    sta $a000 + 62 * 40,x
    lda $a000 + 40 + 63 * 40,x
    sta $a000 + 63 * 40,x
    lda $a000 + 40 + 64 * 40,x
    sta $a000 + 64 * 40,x
    lda $a000 + 40 + 65 * 40,x
    sta $a000 + 65 * 40,x
    lda $a000 + 40 + 66 * 40,x
    sta $a000 + 66 * 40,x
    lda $a000 + 40 + 67 * 40,x
    sta $a000 + 67 * 40,x
    lda $a000 + 40 + 68 * 40,x
    sta $a000 + 68 * 40,x
    lda $a000 + 40 + 69 * 40,x
    sta $a000 + 69 * 40,x
    lda $a000 + 40 + 70 * 40,x
    sta $a000 + 70 * 40,x
    lda $a000 + 40 + 71 * 40,x
    sta $a000 + 71 * 40,x
    lda $a000 + 40 + 72 * 40,x
    sta $a000 + 72 * 40,x
    lda $a000 + 40 + 73 * 40,x
    sta $a000 + 73 * 40,x
    lda $a000 + 40 + 74 * 40,x
    sta $a000 + 74 * 40,x
    lda $a000 + 40 + 75 * 40,x
    sta $a000 + 75 * 40,x
    lda $a000 + 40 + 76 * 40,x
    sta $a000 + 76 * 40,x
    lda $a000 + 40 + 77 * 40,x
    sta $a000 + 77 * 40,x
    lda $a000 + 40 + 78 * 40,x
    sta $a000 + 78 * 40,x
    lda $a000 + 40 + 79 * 40,x
    sta $a000 + 79 * 40,x
    lda $a000 + 40 + 80 * 40,x
    sta $a000 + 80 * 40,x
    lda $a000 + 40 + 81 * 40,x
    sta $a000 + 81 * 40,x
    lda $a000 + 40 + 82 * 40,x
    sta $a000 + 82 * 40,x
    lda $a000 + 40 + 83 * 40,x
    sta $a000 + 83 * 40,x
    lda $a000 + 40 + 84 * 40,x
    sta $a000 + 84 * 40,x
    lda $a000 + 40 + 85 * 40,x
    sta $a000 + 85 * 40,x
    lda $a000 + 40 + 86 * 40,x
    sta $a000 + 86 * 40,x
    lda $a000 + 40 + 87 * 40,x
    sta $a000 + 87 * 40,x
    lda $a000 + 40 + 88 * 40,x
    sta $a000 + 88 * 40,x
    lda $a000 + 40 + 89 * 40,x
    sta $a000 + 89 * 40,x
    lda $a000 + 40 + 90 * 40,x
    sta $a000 + 90 * 40,x
    lda $a000 + 40 + 91 * 40,x
    sta $a000 + 91 * 40,x
    lda $a000 + 40 + 92 * 40,x
    sta $a000 + 92 * 40,x
    lda $a000 + 40 + 93 * 40,x
    sta $a000 + 93 * 40,x
    lda $a000 + 40 + 94 * 40,x
    sta $a000 + 94 * 40,x
    lda $a000 + 40 + 95 * 40,x
    sta $a000 + 95 * 40,x
    lda $a000 + 40 + 96 * 40,x
    sta $a000 + 96 * 40,x
    lda $a000 + 40 + 97 * 40,x
    sta $a000 + 97 * 40,x
    lda $a000 + 40 + 98 * 40,x
    sta $a000 + 98 * 40,x
    lda $a000 + 40 + 99 * 40,x
    sta $a000 + 99 * 40,x
    lda $a000 + 40 + 100 * 40,x
    sta $a000 + 100 * 40,x
    lda $a000 + 40 + 101 * 40,x
    sta $a000 + 101 * 40,x
    lda $a000 + 40 + 102 * 40,x
    sta $a000 + 102 * 40,x
    lda $a000 + 40 + 103 * 40,x
    sta $a000 + 103 * 40,x
    lda $a000 + 40 + 104 * 40,x
    sta $a000 + 104 * 40,x
    lda $a000 + 40 + 105 * 40,x
    sta $a000 + 105 * 40,x
    lda $a000 + 40 + 106 * 40,x
    sta $a000 + 106 * 40,x
    lda $a000 + 40 + 107 * 40,x
    sta $a000 + 107 * 40,x
    lda $a000 + 40 + 108 * 40,x
    sta $a000 + 108 * 40,x
    lda $a000 + 40 + 109 * 40,x
    sta $a000 + 109 * 40,x
    lda $a000 + 40 + 110 * 40,x
    sta $a000 + 110 * 40,x
    lda $a000 + 40 + 111 * 40,x
    sta $a000 + 111 * 40,x
    lda $a000 + 40 + 112 * 40,x
    sta $a000 + 112 * 40,x
    lda $a000 + 40 + 113 * 40,x
    sta $a000 + 113 * 40,x
    lda $a000 + 40 + 114 * 40,x
    sta $a000 + 114 * 40,x
    lda $a000 + 40 + 115 * 40,x
    sta $a000 + 115 * 40,x
    lda $a000 + 40 + 116 * 40,x
    sta $a000 + 116 * 40,x
    lda $a000 + 40 + 117 * 40,x
    sta $a000 + 117 * 40,x
    lda $a000 + 40 + 118 * 40,x
    sta $a000 + 118 * 40,x
    lda $a000 + 40 + 119 * 40,x
    sta $a000 + 119 * 40,x
    lda $a000 + 40 + 120 * 40,x
    sta $a000 + 120 * 40,x
    lda $a000 + 40 + 121 * 40,x
    sta $a000 + 121 * 40,x
    lda $a000 + 40 + 122 * 40,x
    sta $a000 + 122 * 40,x
    lda $a000 + 40 + 123 * 40,x
    sta $a000 + 123 * 40,x
    lda $a000 + 40 + 124 * 40,x
    sta $a000 + 124 * 40,x
    lda $a000 + 40 + 125 * 40,x
    sta $a000 + 125 * 40,x
    lda $a000 + 40 + 126 * 40,x
    sta $a000 + 126 * 40,x
    lda $a000 + 40 + 127 * 40,x
    sta $a000 + 127 * 40,x
    lda $a000 + 40 + 128 * 40,x
    sta $a000 + 128 * 40,x
    lda $a000 + 40 + 129 * 40,x
    sta $a000 + 129 * 40,x
    lda $a000 + 40 + 130 * 40,x
    sta $a000 + 130 * 40,x
    lda $a000 + 40 + 131 * 40,x
    sta $a000 + 131 * 40,x
    lda $a000 + 40 + 132 * 40,x
    sta $a000 + 132 * 40,x
    lda $a000 + 40 + 133 * 40,x
    sta $a000 + 133 * 40,x
    lda $a000 + 40 + 134 * 40,x
    sta $a000 + 134 * 40,x
    lda $a000 + 40 + 135 * 40,x
    sta $a000 + 135 * 40,x
    lda $a000 + 40 + 136 * 40,x
    sta $a000 + 136 * 40,x
    lda $a000 + 40 + 137 * 40,x
    sta $a000 + 137 * 40,x
    lda $a000 + 40 + 138 * 40,x
    sta $a000 + 138 * 40,x
    lda $a000 + 40 + 139 * 40,x
    sta $a000 + 139 * 40,x
    lda $a000 + 40 + 140 * 40,x
    sta $a000 + 140 * 40,x
    lda $a000 + 40 + 141 * 40,x
    sta $a000 + 141 * 40,x
    lda $a000 + 40 + 142 * 40,x
    sta $a000 + 142 * 40,x
    lda $a000 + 40 + 143 * 40,x
    sta $a000 + 143 * 40,x
    lda $a000 + 40 + 144 * 40,x
    sta $a000 + 144 * 40,x
    lda $a000 + 40 + 145 * 40,x
    sta $a000 + 145 * 40,x
    lda $a000 + 40 + 146 * 40,x
    sta $a000 + 146 * 40,x
    lda $a000 + 40 + 147 * 40,x
    sta $a000 + 147 * 40,x
    lda $a000 + 40 + 148 * 40,x
    sta $a000 + 148 * 40,x
    lda $a000 + 40 + 149 * 40,x
    sta $a000 + 149 * 40,x
    lda $a000 + 40 + 150 * 40,x
    sta $a000 + 150 * 40,x
    lda $a000 + 40 + 151 * 40,x
    sta $a000 + 151 * 40,x
    lda $a000 + 40 + 152 * 40,x
    sta $a000 + 152 * 40,x
    lda $a000 + 40 + 153 * 40,x
    sta $a000 + 153 * 40,x
    lda $a000 + 40 + 154 * 40,x
    sta $a000 + 154 * 40,x
    lda $a000 + 40 + 155 * 40,x
    sta $a000 + 155 * 40,x
    lda $a000 + 40 + 156 * 40,x
    sta $a000 + 156 * 40,x
    lda $a000 + 40 + 157 * 40,x
    sta $a000 + 157 * 40,x
    lda $a000 + 40 + 158 * 40,x
    sta $a000 + 158 * 40,x
    lda $a000 + 40 + 159 * 40,x
    sta $a000 + 159 * 40,x
    lda $a000 + 40 + 160 * 40,x
    sta $a000 + 160 * 40,x
    lda $a000 + 40 + 161 * 40,x
    sta $a000 + 161 * 40,x
    lda $a000 + 40 + 162 * 40,x
    sta $a000 + 162 * 40,x
    lda $a000 + 40 + 163 * 40,x
    sta $a000 + 163 * 40,x
    lda $a000 + 40 + 164 * 40,x
    sta $a000 + 164 * 40,x
    lda $a000 + 40 + 165 * 40,x
    sta $a000 + 165 * 40,x
    lda $a000 + 40 + 166 * 40,x
    sta $a000 + 166 * 40,x
    lda $a000 + 40 + 167 * 40,x
    sta $a000 + 167 * 40,x
    lda $a000 + 40 + 168 * 40,x
    sta $a000 + 168 * 40,x
    lda $a000 + 40 + 169 * 40,x
    sta $a000 + 169 * 40,x
    lda $a000 + 40 + 170 * 40,x
    sta $a000 + 170 * 40,x
    lda $a000 + 40 + 171 * 40,x
    sta $a000 + 171 * 40,x
    lda $a000 + 40 + 172 * 40,x
    sta $a000 + 172 * 40,x
    lda $a000 + 40 + 173 * 40,x
    sta $a000 + 173 * 40,x
    lda $a000 + 40 + 174 * 40,x
    sta $a000 + 174 * 40,x
    lda $a000 + 40 + 175 * 40,x
    sta $a000 + 175 * 40,x
    lda $a000 + 40 + 176 * 40,x
    sta $a000 + 176 * 40,x
    lda $a000 + 40 + 177 * 40,x
    sta $a000 + 177 * 40,x
    lda $a000 + 40 + 178 * 40,x
    sta $a000 + 178 * 40,x
    lda $a000 + 40 + 179 * 40,x
    sta $a000 + 179 * 40,x
    lda $a000 + 40 + 180 * 40,x
    sta $a000 + 180 * 40,x
    lda $a000 + 40 + 181 * 40,x
    sta $a000 + 181 * 40,x
    lda $a000 + 40 + 182 * 40,x
    sta $a000 + 182 * 40,x
    lda $a000 + 40 + 183 * 40,x
    sta $a000 + 183 * 40,x
    lda $a000 + 40 + 184 * 40,x
    sta $a000 + 184 * 40,x
    lda $a000 + 40 + 185 * 40,x
    sta $a000 + 185 * 40,x
    lda $a000 + 40 + 186 * 40,x
    sta $a000 + 186 * 40,x
    lda $a000 + 40 + 187 * 40,x
    sta $a000 + 187 * 40,x
    lda $a000 + 40 + 188 * 40,x
    sta $a000 + 188 * 40,x
    lda $a000 + 40 + 189 * 40,x
    sta $a000 + 189 * 40,x
    lda $a000 + 40 + 190 * 40,x
    sta $a000 + 190 * 40,x
    lda $a000 + 40 + 191 * 40,x
    sta $a000 + 191 * 40,x
    lda $a000 + 40 + 192 * 40,x
    sta $a000 + 192 * 40,x
    lda $a000 + 40 + 193 * 40,x
    sta $a000 + 193 * 40,x
    lda $a000 + 40 + 194 * 40,x
    sta $a000 + 194 * 40,x
    lda $a000 + 40 + 195 * 40,x
    sta $a000 + 195 * 40,x
    lda $a000 + 40 + 196 * 40,x
    sta $a000 + 196 * 40,x
    lda $a000 + 40 + 197 * 40,x
    sta $a000 + 197 * 40,x
    lda $a000 + 40 + 198 * 40,x
    sta $a000 + 198 * 40,x

    dex
    beq exit
    jmp loop
exit
    rts
    
User avatar
Dbug
Site Admin
Posts: 4742
Joined: Fri Jan 06, 2006 10:00 pm
Location: Oslo, Norway
Contact:

Re: Wizard's Lair - [raxiss]

Post by Dbug »

Same reason many Atari ST games had large score panels or decoration.
image_2024-10-02_121143285.png
image_2024-10-02_121143285.png (19.79 KiB) Viewed 535 times
image_2024-10-02_121137313.png
image_2024-10-02_121137313.png (9.11 KiB) Viewed 535 times
In your case, the only real way to improve the scroll performance would be to have for example some parchment/scroll decoration on the left and right side, possibly some wooden roles on top and bottom to even more reduce the view, and only scroll the center of it
image_2024-10-02_121405104.png
User avatar
ibisum
Wing Commander
Posts: 1758
Joined: Fri Apr 03, 2009 8:56 am
Location: Vienna, Austria
Contact:

Re: Wizard's Lair - [raxiss]

Post by ibisum »

This is something that Twilighte was tackling with the SWIV project - I think he found a sweet spot in terms of the playing field size:window-dressing ratio.

One of these days I hope someone does a review of the SWIV project and catches up with Twi's work .. its such an inspiring bit of work even in its unfinished state.
Post Reply