View Single Post
Old 24 August 2011, 17:55   #8
Kroah
Registered User
 
Kroah's Avatar
 
Join Date: Apr 2009
Location: France
Age: 46
Posts: 117
Quote:
Originally Posted by jotd View Post
What about the messages that are displayed on the bottom green bar ? It also is an effect, I don't see it in your list.
You're right, i forgot to mention it.
When a puzzle is accepted (all 3 conditions true), the effect is executed AND a message displayed (facultative).
If you want a message to appear when you reach a specific location (without picking up a Hint), just use a puzzle event with a message and without condition, nor effect.

Quote:
Also: there are moving blocks that stop once they have reached their destination, and others which move constantly back and forth.
I still have to decode the moving block parts. I only have the initial state of the moving blocks right now. I will do this after the rendering part and before the CRIPAL part.

Just for info, the files "alfils.0XY" are in fact a concatenation of several files (found in some demos):
- flying waves (missing name)
- godYX.evt
- ground waves (missing name)
- intel.0YX (the cripal file for intelligent AI)
- switches.0YX
- teleport.0YX
- trapdoor.0YX
- mblocks.0YX

Concerning the SMC (self modified code), it seems it's only used to optimize the main game loop (for example, when the player reaches a guardian, most function calls in the main loop ends up to a RTS : no need to check for moving platforms, most collisions, etc...).
Even if this frees up many cpu cycles to avoid unnecessary checks, i don't understand why conditional JSR/BSR are not used like everyone do. I'm not sure the gain is great (without talking about the problem/incompatibility of cache flushing on higher cpu and disabling the JIT in emulator).
On top of that, the JSR/BSR is still executed, using unneeded cycles with the stack.

Example:
Code:
RAM:00019248 MovingBlocks_Update:
RAM:00019248                 nop
RAM:0001924A                 tst.w   (nbMovingBlocksB).w
RAM:0001924E                 bne.s   loc_1925A
RAM:00019250                 move.w  #$4E75,(MovingBlocks_Update).l
RAM:00019258                 rts
RAM:0001925A loc_1925A
[...]
You can see that 4E75 (RTS) is put at the NOP when nbMovingBlocksB=0.
There are around 50 cases like this (more or less equivalent).

Last edited by Kroah; 24 August 2011 at 18:00.
Kroah is offline  
 
Page generated in 0.17667 seconds with 11 queries