 |
 |
GoldenEye 007 Nintendo 64 Community, GoldenEye X, Nintendo 64 Games Discussion GoldenEye Cheats, GoldenEye X Codes, Tips, Help, Nintendo 64 Gaming Community
|
 |
 |
 |
 |
|
 |
 |
 |
 |
 |
Kode-Z Hacker

Joined: 09 Nov 2007 Posts: 1142 Location: London, England  |
Posted: Tue Nov 18, 2008 10:12 am Post subject: GE's Action Blocks |
 |
|
No matter how much I try, I STILL can't get my head around action blocks for the more complex stuff, ie Baron Samedi's spawning action blocks. I really want to make a good solo mission, but action blocks really hold me back.
I'm ok with everything else - just the action blocks. I know that I am not the only one, so any info would be great not only for me, but for everyone else that wants to learn them at a higher level. |
|
|
|
|
|
 |
 |
 |
 |
 |
GERage 00 Agent


Joined: 18 Nov 2007 Posts: 471 Location: Facility vents  |
Posted: Tue Nov 18, 2008 10:56 am Post subject: |
 |
|
OK, before you start doing really complex action blocks, it might help to try and break it down into several simpler parts.
Also, keep in mind that a lot of Rare's action blocks contain irrelevant actions, so I recommend looking at the blocks in our missions. |
|
|
|
|
|
 |
 |
 |
 |
 |
Kode-Z Hacker

Joined: 09 Nov 2007 Posts: 1142 Location: London, England  |
Posted: Tue Nov 18, 2008 2:10 pm Post subject: |
 |
|
GERage wrote: | Also, keep in mind that a lot of Rare's action blocks contain irrelevant actions, so I recommend looking at the blocks in our missions. |
I thought as much. DB cleaned up those Scientist/Alarm action blocks a lot! I'm going to spend most of tonight studying action blocks. I really need to get to grips with them!!!  |
|
|
|
|
|
 |
 |
 |
 |
 |
SubDrag Administrator

Joined: 16 Aug 2006 Posts: 6171
 |
Posted: Tue Nov 18, 2008 3:47 pm Post subject: |
 |
|
Rare did extremely complicated stuff. Most of our action blocks are must simpler, with less linkages. The tutorials should help start you off at least. |
|
|
|
|
|
 |
 |
 |
 |
 |
Kode-Z Hacker

Joined: 09 Nov 2007 Posts: 1142 Location: London, England  |
Posted: Tue Nov 18, 2008 3:53 pm Post subject: |
 |
|
SubDrag wrote: | Rare did extremely complicated stuff. Most of our action blocks are must simpler, with less linkages. The tutorials should help start you off at least. |
I've read the tutorials. I also looked at the alarm action blocks that DB cleaned up and found 040F and 1001 really confusing!
I guess it takes lots of practice! |
|
|
|
|
|
 |
 |
 |
 |
 |
Dragonsbrethren Hacker


Joined: 23 Mar 2007 Posts: 3058
 |
Posted: Tue Nov 18, 2008 8:32 pm Post subject: |
 |
|
I'll break them down for you, maybe that'll help. 040F uses a lot of randomization:
Code: | 040F:
33 Seed Random Byte
35C805 If Seeded Byte > Value, Go Into Return Value Loop (C8)
72007805 Go To Return Value Loop, If Time < Value 72 (0078)
356402 If Seeded Byte > Value, Go Into Return Value Loop (64) |
This generates a random number, if the number is greater than $C8 or if the mission time is under 2 minutes it'll go to 0205. If the value is greater than $64 it'll go to 0202, otherwise it'll just do the next actions:
Code: | 90003C Set Guard Armor Amount (003C)
C000DE0000000000 Spawn Hat (Special Forces Beret (Burgundy))
0200 Resume If Return Value Loop Met
BF00CD068000000001 Spawn Weapon (DD44 Dostovei) (06 DD44) |
This sets this guard to have medium-level armor, and a DD44 in his right hand.
Code: | 0201 Resume If Return Value Loop Met
33 Seed Random Byte
356407 If Seeded Byte > Value, Go Into Return Value Loop (64)
BF00CD069000000007 Spawn Weapon (DD44 Dostovei) (06 DD44) |
This one generates another random number, if it's over $64 it'll jump to 0207, otherwise it'll spawn another DD44 in his left hand, then jump to 0207.
Code: | 0202 Resume If Return Value Loop Met
900050 Set Guard Armor Amount (0050)
C000DD0000000003 Spawn Hat (Special Forces Beret (Navy))
0203 Resume If Return Value Loop Met
BF00C1078000000004 Spawn Weapon (Klobb) (07 Klobb) |
Look familiar? This is the same as 0200, except a stronger guard with a Klobb.
Code: | 0204 Resume If Return Value Loop Met
33 Seed Random Byte
356407 If Seeded Byte > Value, Go Into Return Value Loop (64)
BF00C1079000000007 Spawn Weapon (Klobb) (07 Klobb) |
Same as 0201, except again with a Klobb.
Code: | 0205 Resume If Return Value Loop Met
900014 Set Guard Armor Amount (0014)
C000DC0000000006 Spawn Hat (Special Forces Beret (Black))
0206 Resume If Return Value Loop Met
BF00B8088000000007 Spawn Weapon (KF7 Soviet) (08 KF7) |
This is our weak guy with a KF7. He doesn't have an option of holding two weapons, so there's no 0201/0204 equivalent loop for him, it just runs right into the final loop:
Code: | 0207 Resume If Return Value Loop Met
060002 Set Return Subroutine From JAL (JAL TO: 0002)
05FD0008 JAL To Function (Guard [whatever called it]) (JAL TO: 0008)
04 Terminator |
This is where all of the guards jump after their done spawning their hats and weapons. This one will take a bit more explaining:
Action $06 tells the guard which block to return to when it encounters an $07 action in another block. There are several built-in action blocks that work as subroutines, you call them for common actions and use this action to tell them what to do when they reach the end of that block.
What this action does is set the guard to act like a normal guard (block 0002) after catching Bond (block 0008 makes the guard jog to Bond, then jumps to whatever action you set with $06).
---
1001:
Code: | 1001:
0200 Resume If Return Value Loop Met
03 Leave The Routine, But When Return Continue From Spot
3701 If Alarm Activated, Return Value Loop
0100 Go To Beginning, Then Return Value Loop |
This one is simple, it just sits here until the alarm is going off, then jumps to 0201.
Code: | 0201 Resume If Return Value Loop Met
F4003C4B Plays Value #1-Theme Slot (0-3) For Value #2 Seconds F4 (003C4B)
960108 If Guard Type Value Is Set, Return Value Loop 96 (01)
9401 Mask Guard Type With Value 94 (01) |
This one does two things. First it plays the stage's X track, then it checks whether the guard type value is set to 1 or not. If it is, it'll jump to 0208, otherwise the next action will set that (you'll see why in a bit).
Code: | 0202 Resume If Return Value Loop Met
AE Reset Cycle Counter And Enable It
03 Leave The Routine, But When Return Continue From Spot
311A03 If Bond In Room With Guard ID, Return Value Loop (Invalid Guard ID)
0004 Return Value Loop |
First this activates the cycle counter, which will be used later. Now, if we read what action $31 says, if Bond is in the room with the guard ID it'll jump to 0203 and spawn that guard. We know this never happens from experience with the game, so I'm going to assume this action does the opposite of what it says, if Bond's not in the room with that guard ID it'll go to 0203, otherwise it'll skip this guard and go to 0204 and try the next one instead.
Code: | 0203 Resume If Return Value Loop Met
F304 If Player Pickups Disabled, Return Value Loop F3 (04)
BD04FF0000040C0000000104 Spawn Guard (Janus Special Forces:Black) (Random Head) |
Spawns the first guard, then goes to 0204. If you're curious about the check for whether pickups are disabled or not, that's an easy way for checking if we're in a cutscene (pickups are always disabled in Rare's cutscenes, and they should be in ours too), this prevents it from spawning guards during the mission ending scene.
Code: | 0204 Resume If Return Value Loop Met
03 Leave The Routine, But When Return Continue From Spot
311B05 If Bond In Room With Guard ID, Return Value Loop (Invalid Guard ID)
0006 Return Value Loop |
Same as 0202, but without the cycle counter action and a different guard ID.
Code: | 0205 Resume If Return Value Loop Met
F306 If Player Pickups Disabled, Return Value Loop F3 (06)
BD04FF0000040D0000000106 Spawn Guard (Janus Special Forces:Black) (Random Head) |
Same as 0203, different guard ID.
Code: | 0206 Resume If Return Value Loop Met
03 Leave The Routine, But When Return Continue From Spot
311C07 If Bond In Room With Guard ID, Return Value Loop (Invalid Guard ID)
0008 Return Value Loop |
Same as 0204, different guard ID.
Code: | 0207 Resume If Return Value Loop Met
F308 If Player Pickups Disabled, Return Value Loop F3 (08)
BD04FF0000040E0000000109 Spawn Guard (Janus Special Forces:Black) (Random Head) |
Okay, this one starts out the same as 0201/0203, but skips 0208 and jumps to 0209.
Code: | 0208 Resume If Return Value Loop Met
03 Leave The Routine, But When Return Continue From Spot
B40004B009 If Cycle Counter > Value, Return Value Loop B4 (0004B0)
0108 Go To Beginning, Then Return Value Loop |
This was called if the guard type value was set to 01. This adds a bit of delay between the guards, waiting for the cycle counter to exceed $B4 before calling in the next wave, this stops one wave from spawning immediately after the last one was defeated.
Code: | 0209 Resume If Return Value Loop Met
0102 Go To Beginning, Then Return Value Loop
04 Terminator |
Returns to 0202, starts this whole thing over again. |
|
|
|
|
|
 |
 |
 |
 |
 |
Kode-Z Hacker

Joined: 09 Nov 2007 Posts: 1142 Location: London, England  |
Posted: Wed Nov 19, 2008 5:04 pm Post subject: |
 |
|
Thanks! This helps a lot!
I'm going to spend the next week or so getting to grips with action blocks. A new solo mission is in the pipeline! |
|
|
|
|
|
 |
 |
 |
 |
 |
|
 |
 |
 |
 |
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|
|
 |