| Marsport | Routines |
| Prev: 8269 | Up: Map | Next: 84D3 |
| Bg_DrawColumn | 826E | LD A,(Level_Char) | ||
| 8271 | LD L,$06 | |||
| 8273 | CP $69 | |||
| 8275 | JR C,Bg_DrawColumn_0 | |||
| 8277 | LD L,$07 | |||
| Bg_DrawColumn_0 | 8279 | SUB $61 | ||
| 827B | RLA | |||
| 827C | RLA | |||
| 827D | RLA | |||
| 827E | AND $38 | |||
| 8280 | OR $46 | |||
| 8282 | LD H,A | |||
| 8283 | LD ($82EF),HL | Update some code to use the new value. | ||
| 8286 | LD ($830B),HL | |||
| 8289 | LD ($A41A),HL | |||
| 828C | LD ($A49C),HL | |||
| 828F | XOR A | |||
| 8290 | LD (PathIndex),A | |||
| 8293 | LD DE,(Position_NS) | Get both positions of player. | ||
| 8297 | LD HL,(Position_EW) | |||
| 829A | LD A,(Stage_Compass) | Using the compass work out which way a path should run | ||
| 829D | AND $01 | |||
| 829F | JR NZ,Bg_DrawColumn_1 | |||
| 82A1 | LD IX,(CurrentArea_PathsEWptr) | Get the start of the E/W paths, use the N/S position. | ||
| 82A5 | JR Bg_DrawColumn_2 | |||
| Bg_DrawColumn_1 | 82A7 | LD IX,(CurrentArea_PathsNSptr) | Get the start of the N/S paths, use the E/W position. | |
| 82AB | EX DE,HL | |||
| Bg_DrawColumn_2 | 82AC | LD A,(Hero_ThroughDoor) | ||
| 82AF | AND A | |||
| 82B0 | JR Z,Bg_DrawColumn_5 | |||
|
Going through a door.
|
||||
| 82B2 | LD A,(Stage_Compass) | |||
| 82B5 | LD BC,$0006 | |||
| 82B8 | CP $02 | |||
| 82BA | JR C,Bg_DrawColumn_3 | |||
| 82BC | LD BC,$FFFA | |||
| Bg_DrawColumn_3 | 82BF | LD A,(Hero_LastDir) | ||
| 82C2 | CP $02 | |||
| 82C4 | JR Z,Bg_DrawColumn_4 | |||
| 82C6 | ADD HL,BC | |||
| 82C7 | JR Bg_DrawColumn_5 | |||
| Bg_DrawColumn_4 | 82C9 | AND A | ||
| 82CA | SBC HL,BC | |||
| Bg_DrawColumn_5 | 82CC | LD C,L | ||
| 82CD | LD B,H | |||
|
Is position on path?
|
||||
| Bg_DrawColumn_6 | 82CE | PUSH DE | First check if inscreen position is on the axis of path. | |
| 82CF | LD L,(IX+$00) | |||
| 82D2 | LD H,(IX+$01) | |||
| 82D5 | AND A | |||
| 82D6 | SBC HL,DE | |||
| 82D8 | JR NC,Bg_DrawColumn_7 | |||
| 82DA | LD DE,$0004 | |||
| 82DD | AND A | |||
| 82DE | ADC HL,DE | |||
| 82E0 | JP M,Bg_DrawColumn_9 | |||
| 82E3 | JR Bg_DrawColumn_8 | |||
| Bg_DrawColumn_7 | 82E5 | LD DE,$0004 | ||
| 82E8 | SCF | |||
| 82E9 | SBC HL,DE | |||
| 82EB | JR NC,Bg_DrawColumn_11 | |||
| Bg_DrawColumn_8 | 82ED | BIT 2,(IX+$06) | ||
| 82F1 | JR Z,Bg_DrawColumn_10 | |||
| 82F3 | LD L,(IX+$02) | Now see if the other position (left/right) is within the two ends of the path. | ||
| 82F6 | LD H,(IX+$03) | |||
| 82F9 | SCF | |||
| 82FA | SBC HL,BC | |||
| 82FC | JR NC,Bg_DrawColumn_9 | |||
| 82FE | LD L,(IX+$04) | |||
| 8301 | LD H,(IX+$05) | |||
| 8304 | AND A | |||
| 8305 | SBC HL,BC | |||
| 8307 | JR NC,Bg_DrawColumn_13 | |||
| Bg_DrawColumn_9 | 8309 | BIT 2,(IX+$06) | ||
| 830D | JR Z,Bg_DrawColumn_10 | |||
| 830F | LD HL,PathIndex | Increase path index | ||
| 8312 | INC (HL) | |||
|
Next path in list...
|
||||
| Bg_DrawColumn_10 | 8313 | LD DE,$000A | ||
| 8316 | ADD IX,DE | |||
| 8318 | POP DE | |||
| 8319 | JR Bg_DrawColumn_6 | |||
|
Path found...
|
||||
| Bg_DrawColumn_11 | 831B | POP DE | ||
| 831C | LD DE,(Position_NS) | |||
| 8320 | LD HL,(Position_EW) | |||
| 8323 | LD A,(Stage_Compass) | |||
| 8326 | BIT 0,A | |||
| 8328 | JR Z,Bg_DrawColumn_12 | |||
| 832A | EX DE,HL | |||
| Bg_DrawColumn_12 | 832B | LD ($BE09),DE | ||
| 832F | LD (PathPosHalfway),HL | |||
| 8332 | LD A,$06 | |||
| 8334 | LD (PathHalfLength),A | |||
| 8337 | LD A,$E9 | |||
| 8339 | LD (CurrentPathInfo),A | |||
| 833C | LD DE,$0004 | |||
| 833F | AND A | |||
| 8340 | SBC HL,DE | |||
| 8342 | LD ($BE0B),HL | |||
| 8345 | ADD HL,DE | |||
| 8346 | ADD HL,DE | |||
| 8347 | LD ($BE0D),HL | |||
| 834A | LD IX,$BE09 | |||
| 834E | LD (PathPtr),IX | |||
| 8352 | LD (Path__),A | |||
| 8355 | JP Bg_DrawColumn_26 | |||
|
Path found...
|
||||
| Bg_DrawColumn_13 | 8358 | POP DE | ||
| 8359 | LD (PathPtr),IX | |||
| 835D | LD A,(Stage_Compass) | |||
| 8360 | LD (Path__),A | |||
| 8363 | LD (PathPtrCopy),IX | |||
| 8367 | LD (Path__Copy),A | |||
| 836A | LD L,(IX+$04) | Calculate halfway point along path. | ||
| 836D | LD H,(IX+$05) | |||
| 8370 | LD E,(IX+$02) | |||
| 8373 | LD D,(IX+$03) | |||
| 8376 | AND A | |||
| 8377 | SBC HL,DE | |||
| 8379 | SRL H | |||
| 837B | RR L | |||
| 837D | LD A,L | |||
| 837E | ADD HL,DE | |||
| 837F | LD (PathPosHalfway),HL | |||
| 8382 | ADD A,$02 | |||
| 8384 | LD (PathHalfLength),A | |||
| 8387 | LD DE,CurrentPathInfo | |||
| 838A | LD HL,$BE26 | |||
| 838D | LD BC,$0007 | |||
| 8390 | LDIR | |||
| 8392 | LD A,(Stage_Compass) | |||
| 8393 | LD B,A | Correct position on path axis. | ||
| 8394 | CP L | |||
| 8395 | LD L,(IX+$00) | |||
| 8398 | LD H,(IX+$01) | |||
| 839B | BIT 0,A | |||
| 839D | JR Z,Bg_DrawColumn_14 | |||
| 839F | LD (Position_EW),HL | |||
| 83A2 | LD HL,($BD70) | |||
| 83A5 | LD DE,($BD72) | |||
| 83A9 | JR Bg_DrawColumn_15 | |||
| Bg_DrawColumn_14 | 83AB | LD (Position_NS),HL | ||
| 83AE | LD HL,($BD6C) | |||
| 83B1 | LD DE,($BD6E) | |||
| Bg_DrawColumn_15 | 83B5 | BIT 1,A | ||
| 83B7 | JR Z,Bg_DrawColumn_16 | |||
| 83B9 | EX DE,HL | |||
|
Search through path info based on index.
|
||||
| Bg_DrawColumn_16 | 83BA | LD A,(PathIndex) | ||
| 83BD | AND A | |||
| 83BE | JR Z,Bg_DrawColumn_18 | |||
| 83C0 | LD B,A | |||
| 83C1 | LD D,$00 | |||
| Bg_DrawColumn_17 | 83C3 | LD A,(HL) | Calculate size of data for this path. | |
| 83C4 | RLCA | |||
| 83C5 | RLCA | |||
| 83C6 | RLCA | |||
| 83C7 | OR $01 | |||
| 83C9 | AND $07 | |||
| 83CB | LD E,A | |||
| 83CC | ADD HL,DE | Skip onto next path using size. | ||
| 83CD | DJNZ Bg_DrawColumn_17 | |||
| Bg_DrawColumn_18 | 83CF | EX DE,HL | ||
| 83D0 | LD A,(_be1c) | |||
| 83D3 | AND A | |||
| 83D4 | JR NZ,Bg_DrawColumn_19 | |||
| 83D6 | LD HL,(_be21) | |||
| 83D9 | AND A | |||
| 83DA | SBC HL,DE | |||
| 83DC | JR NZ,Bg_DrawColumn_19 | |||
| 83DE | LD DE,$BE23 | |||
|
Copy path info in current store
|
||||
| Bg_DrawColumn_19 | 83E1 | EX DE,HL | ||
| 83E2 | LD A,(HL) | |||
| 83E3 | AND $3F | |||
| 83E5 | ADD A,$DD | |||
| 83E7 | LD DE,CurrentPathInfo | |||
| 83EA | LD (DE),A | |||
| 83EB | LD A,(HL) | |||
| 83EC | AND $C0 | |||
| 83EE | JR Z,Bg_DrawColumn_20 | |||
| 83F0 | RLCA | |||
| 83F1 | RLCA | |||
| 83F2 | RLCA | |||
| 83F3 | LD C,A | |||
| 83F4 | LD B,$00 | |||
| 83F6 | INC HL | |||
| 83F7 | INC DE | |||
| 83F8 | LDIR | |||
| Bg_DrawColumn_20 | 83FA | LD A,(_bd74) | ||
| 83FD | AND A | |||
| 83FE | JP NZ,Bg_DrawColumn_26 | |||
| 8401 | LD HL,Str_SignFormatLevel | Str_SignFormat is a formatted string. | ||
| 8404 | LD A,(Level_Char) | Update string with the current level. | ||
| 8407 | OR $80 | |||
| 8409 | LD (HL),A | |||
| 840A | INC HL | Now update it with the sector number. | ||
| 840B | INC HL | |||
| 840C | LD A,(IX+$08) | |||
| 840F | LD (HL),A | |||
| 8410 | INC HL | |||
| 8411 | LD A,(IX+$09) | and the area. | ||
| 8414 | LD (HL),A | |||
| 8415 | LD A,$8F | |||
| 8417 | LD HL,Str_SignFormat | Update the sign showing level and sector. | ||
| 841A | LD B,$05 | |||
| 841C | CALL String_DrawToSign | |||
| 841F | LD A,(IX+$09) | |||
| 8422 | AND $7F | |||
| 8424 | CP $35 | |||
| 8426 | JP NC,Bg_DrawColumn_26 | |||
| 8429 | CALL _84d3 | |||
| 842C | LD A,(Level_Char) | level *10 | ||
| 842F | SUB $61 | |||
| 8431 | LD B,A | |||
| 8432 | RLCA | |||
| 8433 | RLCA | |||
| 8434 | ADD A,B | |||
| 8435 | RLCA | |||
| 8436 | LD B,A | |||
| 8437 | LD A,(IX+$08) | plus offset | ||
| 843A | AND $7F | |||
| 843C | SUB $60 | |||
| 843E | ADD A,B | |||
| 843F | LD E,A | |||
| 8440 | LD D,$00 | |||
| 8442 | LD HL,_bda5 | |||
| 8445 | ADD HL,DE | |||
| 8446 | LD A,(Hero_ThroughDoor) | |||
| 8449 | AND A | |||
| 844A | JR NZ,Bg_DrawColumn_25 | |||
| 844C | LD A,(_bd0c_central_) | |||
| 844F | CP $03 | |||
| 8451 | JR Z,Bg_DrawColumn_25 | |||
| 8453 | LD DE,Stat_Percent | |||
| 8456 | CP $02 | |||
| 8458 | JR NZ,Bg_DrawColumn_21 | |||
| 845A | INC DE | |||
| 845B | INC DE | |||
| Bg_DrawColumn_21 | 845C | RRCA | ||
| 845D | RRCA | |||
| 845E | AND $80 | |||
| 8460 | XOR (HL) | |||
| 8461 | JP M,Bg_DrawColumn_25 | |||
| 8464 | RRCA | |||
| 8465 | RRCA | |||
| 8466 | RRCA | |||
| 8467 | RRCA | |||
| 8468 | AND $07 | |||
| 846A | EX DE,HL | |||
| 846B | ADD A,(HL) | |||
| 846C | DAA | |||
| 846D | LD (HL),A | |||
| 846E | JR NC,Bg_DrawColumn_22 | |||
| 8470 | INC HL | |||
| 8471 | INC (HL) | |||
| Bg_DrawColumn_22 | 8472 | EX DE,HL | ||
| 8473 | LD A,(HL) | |||
| 8474 | AND $0F | |||
| 8476 | LD (HL),A | |||
| 8477 | LD A,(Level_Char) | |||
| 847A | CP $68 | |||
| 847C | JR NZ,Bg_DrawColumn_25 | |||
| 847E | LD A,(IX+$08) | |||
| 8481 | AND $7F | |||
| 8483 | CP $65 | |||
| 8485 | JR NZ,Bg_DrawColumn_23 | |||
| 8487 | LD A,(_bd0c_central_) | |||
| 848A | CP $01 | |||
| 848C | JR NZ,Bg_DrawColumn_25 | |||
| 848E | JR Bg_DrawColumn_24 | |||
| Bg_DrawColumn_23 | 8490 | CP $69 | ||
| 8492 | JR NZ,Bg_DrawColumn_25 | |||
| 8494 | LD A,(_bd0c_central_) | |||
| 8497 | CP $02 | |||
| 8499 | JR NZ,Bg_DrawColumn_25 | |||
| Bg_DrawColumn_24 | 849B | INC A | ||
| 849C | LD (_bd0c_central_),A | |||
| Bg_DrawColumn_25 | 849F | BIT 2,(HL) | ||
| 84A1 | CALL NZ,Warning_Herald | |||
| 84A4 | BIT 3,(HL) | |||
| 84A6 | CALL NZ,_85f4 | |||
| 84A9 | LD A,(HL) | |||
| 84AA | AND $03 | |||
| 84AC | CALL NZ,Warning_Sept | |||
| 84AF | LD A,(IX+$08) | |||
| 84B2 | AND $7F | |||
| 84B4 | LD ($BD65),A | |||
| Bg_DrawColumn_26 | 84B7 | LD DE,$0022 | ||
| 84BA | LD L,(IX+$02) | |||
| 84BD | LD H,(IX+$03) | |||
| 84C0 | AND A | |||
| 84C1 | SBC HL,DE | |||
| 84C3 | LD ($BE14),HL | |||
| 84C6 | LD L,(IX+$04) | |||
| 84C9 | LD H,(IX+$05) | |||
| 84CC | ADD HL,DE | |||
| 84CD | LD ($BE18),HL | |||
| 84D0 | JP Level_TextPrint | |||
| Prev: 8269 | Up: Map | Next: 84D3 |