Author Topic: Escheron: Shadow over Ragnoth  (Read 161407 times)

0 Members and 1 Guest are viewing this topic.

Offline Eeems

  • Mr. Dictator
  • Administrator
  • LV13 Extreme Addict (Next: 9001)
  • *************
  • Posts: 6265
  • Rating: +318/-36
  • little oof
    • View Profile
    • Eeems
Re: Escheron: Shadow over Ragnoth
« Reply #90 on: June 21, 2009, 01:11:42 am »
Yay! moar subforums XD
good luck btw Iambian
Hmm, this reminds me, I need to bug Drak about his game
/e

Offline simplethinker

  • LV7 Elite (Next: 700)
  • *******
  • Posts: 695
  • Rating: +16/-5
  • snjwffl
    • View Profile
Re: Escheron: Shadow over Ragnoth
« Reply #91 on: June 21, 2009, 08:53:38 am »
I figured that since Iambian is going to continue posting progress here that this project deserved its own sub-forum, along with Drak's PotterQuest 2 (hoping he finishes it)
So Iambian is so awesome that he didn't even need to apply for this game to be featured?
"We've all heard that a million monkeys banging on a million typewriters will eventually reproduce the entire works of Shakespeare. Now, thanks to the Internet, we know this is not true." -- Professor Robert Silensky



Chip's Challenge: ħ%

Offline {AP}

  • LV8 Addict (Next: 1000)
  • ********
  • Posts: 981
  • Rating: +74/-3
  • I am Webmaster!
    • View Profile
    • Removed From Game
Re: Escheron: Shadow over Ragnoth
« Reply #92 on: June 21, 2009, 09:00:15 am »
That's about the gist of it, Simplethinker.

Loving how things are coming along, Iambian~

Offline Ti-newb

  • LV4 Regular (Next: 200)
  • ****
  • Posts: 180
  • Rating: +3/-0
    • View Profile
Re: Escheron: Shadow over Ragnoth
« Reply #93 on: June 22, 2009, 11:30:54 am »
dude. Iambian is so awsome. i bet he doesn't even need to touch his calc to program it.

Offline calc84maniac

  • eZ80 Guru
  • Coder Of Tomorrow
  • LV11 Super Veteran (Next: 3000)
  • ***********
  • Posts: 2912
  • Rating: +471/-17
    • View Profile
    • TI-Boy CE
Re: Escheron: Shadow over Ragnoth
« Reply #94 on: June 22, 2009, 11:41:16 am »
Yeah, he probably uses an emulator instead. :P
"Most people ask, 'What does a thing do?' Hackers ask, 'What can I make it do?'" - Pablos Holman

Offline DJ Omnimaga

  • Clacualters are teh gr33t
  • CoT Emeritus
  • LV15 Omnimagician (Next: --)
  • *
  • Posts: 55942
  • Rating: +3154/-232
  • CodeWalrus founder & retired Omnimaga founder
    • View Profile
    • Dream of Omnimaga Music
Re: Escheron: Shadow over Ragnoth
« Reply #95 on: June 22, 2009, 12:07:06 pm »
Like tr1p1ea until a while after he stopped working on xLIB. He only had a regular 83 to test Desolate and no 83+, then he got a 84+ but it had a broken screen. He couldn't even play the games on the real thing.
Now active at https://discord.gg/cuZcfcF (CodeWalrus server)

Offline Iambian

  • Coder Of Tomorrow
  • LV8 Addict (Next: 1000)
  • ********
  • Posts: 739
  • Rating: +216/-3
  • Cherry Flavoured Nommer of Fishies
    • View Profile
Re: Escheron: Shadow over Ragnoth
« Reply #96 on: June 22, 2009, 11:35:44 pm »
Okay. I've run into massive problems with regard to the tilemapper. Simply put, I just don't have the CCs needed to run it without a degradation of grayscale quality, or some serious slowing. Only a few solutions present themselves:

1. Change interrupt scheme. Previously, everything's being run in the interrupt. This could change so that the "main code" would contain the tilemapper

2. Reduce framerate further to fit in the interrupts. This calls for 14FPS and a doubling up of scrolling, so it'll scroll 2 pixels at a time.

3. Restrict this project to the 83+SE/84+(SE) calculators, to take advantage of the 15MHz clock and the spare RAM.

4. Just keep trying again and again to accelerate the tilemapper. Currently, I'm using prerotated tiles with two masks to merge the tiles to achieve horizontal scrolling. The specific logic is the follows: " ld a,(de) \ and b \ xor (hl) \ and c \ xor (hl)" to achieve the sprite. C the logical not(B). Enlightening me on alternative schemes would be of best help. Currently, the tiles are interleaved and the buffer is the same, and is also vertically aligned, so if this was a simply aligned version, it would be a few LDIRs to the buffer.

Help would be appreciated in this respect.
A Cherry-Flavored Iambian draws near... what do you do? ...

Offline DJ Omnimaga

  • Clacualters are teh gr33t
  • CoT Emeritus
  • LV15 Omnimagician (Next: --)
  • *
  • Posts: 55942
  • Rating: +3154/-232
  • CodeWalrus founder & retired Omnimaga founder
    • View Profile
    • Dream of Omnimaga Music
Re: Escheron: Shadow over Ragnoth
« Reply #97 on: June 22, 2009, 11:45:18 pm »
mhmm weird x.x, Tr1p1ea had a scrolling tilemapper with grayscale back then but it had lower gs quality IIRC. It's really hard to keep good quality with these LCD drivers.

Personally I wouldn't mind a 15 MHz-only version, though, as long as it runs on WabbitEmu or TI-Nspire
Now active at https://discord.gg/cuZcfcF (CodeWalrus server)

Offline Galandros

  • LV9 Veteran (Next: 1337)
  • *********
  • Posts: 1140
  • Rating: +42/-10
    • View Profile
Re: Escheron: Shadow over Ragnoth
« Reply #98 on: June 23, 2009, 03:57:01 am »
4. Just keep trying again and again to accelerate the tilemapper. Currently, I'm using prerotated tiles with two masks to merge the tiles to achieve horizontal scrolling. The specific logic is the follows: " ld a,(de) \ and b \ xor (hl) \ and c \ xor (hl)" to achieve the sprite. C the logical not(B). Enlightening me on alternative schemes would be of best help. Currently, the tiles are interleaved and the buffer is the same, and is also vertically aligned, so if this was a simply aligned version, it would be a few LDIRs to the buffer.
Putting that in logic corresponds to: { [ ( (de) and b ) xor (hl) ] and c} xor (hl) ? the two (hl) are the same?
b=~c  then  // ~ means not()
{ [ ( (hl) and b ) xor (hl) ] and not(b) } xor (hl) ?

Now is question of using some logic rules (DeMorgan's Law, for example) *gets philosophy logic papers* And test how well it turns into z80...

EDIT: I will post all substitution rules from logic:
Code: [Select]
DeMorgan's Laws
~(A ^ B)=(~A V ~B)
~(A V B)=(~A V ~B)

Commutativity
(A ^ B) = (B ^ A)
(A V B) = (B V A)

Association
(A ^ (B ^ C)) = ((A ^ B) ^ C)
(A V (B V C)) = ((A V B) V C)

Distribution
(A ^ (B V C)) = ((A ^ B) V (A ^ C))
(A V (B ^ C)) = ((A V B) ^ (A V C))

Double Negation
A = ~~A

Contra position (technical translations are hard :S )
(A -> B) = (~B -> ~A)

Material Implication
(A -> B) = (~A V B)

Material Equivalent
(A <-> B) = ((A -> B) ^ (B -> A)
(A <-> B) = ((A^B)V(~A^~B))

Exportation
((A^B)->C) = (A->(B->C))

Tautology
A = (A V A)
A= (A ^ B)

~ = not()
V = or
^ = and
-> = conditional (I think it doesn't have interest)
<-> = bicondicional (same as above)
Searching things in:
http://en.wikipedia.org/wiki/Logical_operator
http://en.wikipedia.org/wiki/List_of_Boolean_algebra_topics                    // here look at all connectives topics (especially xor, as know as exclusive or)

Logical rules in images here:
http://en.wikipedia.org/wiki/Boolean_logic
I found there another rule:

absorption

One more thing A xor B is like ~(A <-> B)
This topic looked promising but was disappointment: http://en.wikipedia.org/wiki/Logic_minimization

Damn, now I really wanted that my BASIC program calculated this things to make sure I am doing substitutions right in the end. I have it but I haven't finished. It is going to be for my cousin. xD
 By hand it takes so much time doing truth tables.

Who is going to read all this stuff? :o  ;D
ENDEDIT:


When you talked about changing buffers stuff, I had an idea that I don't know what could bring in real implementation.
The idea is to make in pairs of two bytes with dark and light layer:
(x1,y1)dark , (x1,y1) light , (x2,y1)dark , (x2,y1)ligh ...

To get the light layer is just inc hl...
« Last Edit: June 23, 2009, 07:55:25 am by Galandros »
Hobbing in calculator projects.

Offline SolusIpse

  • LV2 Member (Next: 40)
  • **
  • Posts: 35
  • Rating: +1/-0
    • View Profile
Re: Escheron: Shadow over Ragnoth
« Reply #99 on: June 23, 2009, 10:37:24 am »
1. Change interrupt scheme. Previously, everything's being run in the interrupt. This could change so that the "main code" would contain the tilemapper

I don't think either tr1p1ea or Jim e or anyone who did gs has ever put the ENTIRE tilemapper into an interrupt.  Jim's (pokemon) mapper couldn't because of the way he implemented gs.  So he went with a modified planeshifter that handles gs tiles.  Otherwise, I'm sure he would have attempted to integrate mapping into the LCD communication like his fastmapper/crashmapper.

tr1p1ea might be for SSB/Mario because he's special ^_^

edit:
what size are the tiles and why do you need masks to merge the prerotated tiles?

Offline Iambian

  • Coder Of Tomorrow
  • LV8 Addict (Next: 1000)
  • ********
  • Posts: 739
  • Rating: +216/-3
  • Cherry Flavoured Nommer of Fishies
    • View Profile
Re: Escheron: Shadow over Ragnoth
« Reply #100 on: June 23, 2009, 03:45:08 pm »
[...]
When you talked about changing buffers stuff, I had an idea that I don't know what could bring in real implementation.
The idea is to make in pairs of two bytes with dark and light layer:
(x1,y1)dark , (x1,y1) light , (x2,y1)dark , (x2,y1)ligh ...

To get the light layer is just inc hl...
(to prevent the page from getting too long, much stuff was omitted,but the post can still be referenced)

When I say that the gray buffer is interleaved, what is quoted is exactly what I mean. Except that the buffer is also vertically aligned: (x1,y1)dark, (x1,y1)light, (x1,y2)dark, (x1,y2)light, ...

[...]
edit:
what size are the tiles and why do you need masks to merge the prerotated tiles?

The tiles are 16*16, but they'll be treated as 8*16 for the purposes of the tilemapper.
I'm using masks to put together the prerotated tiles to achieve horizontal scrolling. Say that the tileset has been rotated 4 times so far (to provide the illusion of moving to the side 4 pixles). The line of the tile on the left reads  %11011011 and the first line of the tile on the right side reads %01010101. The mask will be %11110000 and after the merge, the byte will read %11010101. I assume there's a faster way?
A Cherry-Flavored Iambian draws near... what do you do? ...

Offline Galandros

  • LV9 Veteran (Next: 1337)
  • *********
  • Posts: 1140
  • Rating: +42/-10
    • View Profile
Re: Escheron: Shadow over Ragnoth
« Reply #101 on: June 23, 2009, 04:18:49 pm »
(to prevent the page from getting too long, much stuff was omitted,but the post can still be referenced)

When I say that the gray buffer is interleaved, what is quoted is exactly what I mean. Except that the buffer is also vertically aligned: (x1,y1)dark, (x1,y1)light, (x1,y2)dark, (x1,y2)light, ...
Oh I never got what interleaved was. Actually I confused with interlaced?

Vertically aligned also helps the tile mapper, why it still doesn't get fast enough?


In logic I will give a shot when I can. I need Wikipedia pages and I am not the only one at home...
Hobbing in calculator projects.

Offline SolusIpse

  • LV2 Member (Next: 40)
  • **
  • Posts: 35
  • Rating: +1/-0
    • View Profile
Re: Escheron: Shadow over Ragnoth
« Reply #102 on: June 23, 2009, 08:51:15 pm »
[...]
When you talked about changing buffers stuff, I had an idea that I don't know what could bring in real implementation.
The idea is to make in pairs of two bytes with dark and light layer:
(x1,y1)dark , (x1,y1) light , (x2,y1)dark , (x2,y1)ligh ...

To get the light layer is just inc hl...
(to prevent the page from getting too long, much stuff was omitted,but the post can still be referenced)

When I say that the gray buffer is interleaved, what is quoted is exactly what I mean. Except that the buffer is also vertically aligned: (x1,y1)dark, (x1,y1)light, (x1,y2)dark, (x1,y2)light, ...
that actually sounds like a ridiculously good idea afaik.  in practice it's probably hard to implement

Quote
[...]
edit:
what size are the tiles and why do you need masks to merge the prerotated tiles?

The tiles are 16*16, but they'll be treated as 8*16 for the purposes of the tilemapper.
I'm using masks to put together the prerotated tiles to achieve horizontal scrolling. Say that the tileset has been rotated 4 times so far (to provide the illusion of moving to the side 4 pixles). The line of the tile on the left reads  %11011011 and the first line of the tile on the right side reads %01010101. The mask will be %11110000 and after the merge, the byte will read %11010101. I assume there's a faster way?
i can't imagine a messuptiles being faster.  are you storing the pieces into a buffer? like are you buffering the pieces before the merge?  i'm guessing you're not building every combination on the fly?

if you can get prerotation such that it's stored in a buffer where each tile is 3 bytes wide (left, middle, right byte of the rotated 2 bytes), you can just grab pieces as needed.  i'm still a bit confused as to what you mean by prerotation.

Offline Iambian

  • Coder Of Tomorrow
  • LV8 Addict (Next: 1000)
  • ********
  • Posts: 739
  • Rating: +216/-3
  • Cherry Flavoured Nommer of Fishies
    • View Profile
Re: Escheron: Shadow over Ragnoth
« Reply #103 on: June 23, 2009, 10:20:15 pm »
calc84maniac gave me some help with the tilemapper. It might be possible to do the thing on the 83+ calcs after all, but I'll still need to run through the timings given the idea he gave me. The idea he gave came right out of Project M, but the main difference is that the vertically-aligned buffer looks like it'll be a liability after all. Maybe.

Time will tell.
A Cherry-Flavored Iambian draws near... what do you do? ...

Offline DJ Omnimaga

  • Clacualters are teh gr33t
  • CoT Emeritus
  • LV15 Omnimagician (Next: --)
  • *
  • Posts: 55942
  • Rating: +3154/-232
  • CodeWalrus founder & retired Omnimaga founder
    • View Profile
    • Dream of Omnimaga Music
Re: Escheron: Shadow over Ragnoth
« Reply #104 on: June 24, 2009, 12:18:29 am »
I hope it works out :)
Now active at https://discord.gg/cuZcfcF (CodeWalrus server)