![]() |
Routines |
Prev: 55160 | Up: Map | Next: 55407 |
Used by the routine at Handler_SeaCreatures.
|
||||||||
Fetch a random-ish number.
|
||||||||
Handler_SeaCreatures_Chooser | 55271 | CALL UpdateAnimationCounter | Call UpdateAnimationCounter. | |||||
55274 | AND %00000111 | Ensure the number is between 0 to 4. | ||||||
55276 | SUB 2 | |||||||
55278 | CP 5 | |||||||
55280 | JR C,Handler_SetSeaCreature | |||||||
55282 | LD A,4 | |||||||
Handler_SetSeaCreature | 55284 | LD E,A | Create an offset in DE using A. | |||||
55285 | LD D,0 | |||||||
|
||||||||
55287 | SLA E | DE*=8. | ||||||
55289 | SLA E | |||||||
55291 | SLA E | |||||||
55293 | PUSH DE | HL=DE (using the stack). | ||||||
55294 | POP HL | |||||||
55295 | SLA E | HL+=DE*2. | ||||||
55297 | RL D | |||||||
55299 | ADD HL,DE | |||||||
55300 | LD DE,55614 | HL+=TableDefaultSeaCreatures. | ||||||
55303 | ADD HL,DE | |||||||
55304 | PUSH IX | DE=IX (using the stack). | ||||||
55306 | POP DE | |||||||
55307 | LD BC,24 | BC=0024. | ||||||
55310 | LDIR | Copy 0024 bytes of data from the chosen creature defaults table to the creature slot. | ||||||
Fetch a random-ish number.
|
||||||||
Handler_SetSeaCreatureYPosition | 55312 | CALL UpdateAnimationCounter | Call UpdateAnimationCounter. | |||||
55315 | AND %00001111 | Keep only bits 0-3. | ||||||
55317 | ADD A,6 | A+=6. | ||||||
55319 | CP 17 | Jump to Handler_SetSeaCreatureYPosition if A is higher than 17. | ||||||
55321 | JR NC,Handler_SetSeaCreatureYPosition | |||||||
55323 | RES 0,A | Reset bit 0 of A. | ||||||
55325 | LD (IX+1),A | Write A to *IX+1. | ||||||
55328 | LD (IX+14),A | Write A to *IX+14. | ||||||
55331 | PUSH IY | Stash IY on the stack. | ||||||
55333 | LD IY,56134 | IY=Data_SeaCreatures. | ||||||
55337 | LD L,A | L=A. | ||||||
55338 | LD BC,(56728) | BC=*56728. | ||||||
Handler_SeaCreatures_Chooser_0 | 55342 | LD A,(IY+10) | Jump to Handler_SeaCreatures_Chooser_1 if *IY+10 is equal to 0. | |||||
55345 | CP 0 | |||||||
55347 | JR Z,Handler_SeaCreatures_Chooser_1 | |||||||
55349 | LD A,(IY+1) | Jump to Handler_SeaCreatures_Chooser_1 if *IY+1 is not equal to L. | ||||||
55352 | CP L | |||||||
55353 | JR NZ,Handler_SeaCreatures_Chooser_1 | |||||||
55355 | LD A,(IY+0) | Jump to Handler_SeaCreatures_Chooser_2 if *IY+0 is higher than 15. | ||||||
55358 | CP 15 | |||||||
55360 | JP NC,Handler_SeaCreatures_Chooser_2 | |||||||
Handler_SeaCreatures_Chooser_1 | 55363 | LD DE,24 | IY+=0024. | |||||
55366 | ADD IY,DE | |||||||
55368 | DJNZ Handler_SeaCreatures_Chooser_0 | Decrease counter by one and loop back to Handler_SeaCreatures_Chooser_0 until counter is zero. | ||||||
55370 | POP IY | Restore IY from the stack. | ||||||
55372 | LD A,1 | Write 1 to *IX+10. | ||||||
55374 | LD (IX+10),A | |||||||
55377 | LD A,34 | A=34+*IX+7. | ||||||
55379 | ADD A,(IX+7) | |||||||
55382 | LD (IX+0),A | Write A to *IX+0. | ||||||
55385 | LD (IX+13),A | Write A to *IX+13. | ||||||
55388 | LD (IX+2),1 | Write 1 to *IX+2. | ||||||
55392 | LD (IX+11),1 | Write 1 to *IX+11. | ||||||
55396 | JP Handler_SeaCreatures_Next | Jump to Handler_SeaCreatures_Next. | ||||||
Handler_SeaCreatures_Chooser_2 | 55399 | POP IY | Restore IY from the stack. | |||||
55401 | JP Handler_SeaCreatures_Next | Jump to Handler_SeaCreatures_Next. | ||||||
55404 | POP IX | Restore IX from the stack. | ||||||
55406 | RET | Return. |
Prev: 55160 | Up: Map | Next: 55407 |