64 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			NASM
		
	
	
	
			
		
		
	
	
			64 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			NASM
		
	
	
	
| HandleOwlStatue:
 | |
|     call GetRoomStatusAddressInHL
 | |
|     ld   a, [hl]
 | |
|     and  $20
 | |
|     ret  nz
 | |
|     ld   a, [hl]
 | |
|     or   $20
 | |
|     ld   [hl], a
 | |
| 
 | |
|     ld   hl, $7B16
 | |
|     call OffsetPointerByRoomNumber
 | |
|     ld   a, [hl]
 | |
|     ldh  [$F1], a
 | |
|     call ItemMessage
 | |
|     call GiveItemFromChest
 | |
|     ret
 | |
| 
 | |
| 
 | |
| 
 | |
| GetRoomStatusAddressInHL:
 | |
|     ld   a, [$DBA5] ; isIndoor
 | |
|     ld   d, a
 | |
|     ld   hl, $D800
 | |
|     ldh  a, [$F6]   ; room nr
 | |
|     ld   e, a
 | |
|     ldh  a, [$F7]   ; map nr
 | |
|     cp   $FF
 | |
|     jr   nz, .notColorDungeon
 | |
| 
 | |
|     ld   d, $00
 | |
|     ld   hl, $DDE0
 | |
|     jr   .notIndoorB
 | |
| 
 | |
| .notColorDungeon:
 | |
|     cp   $1A
 | |
|     jr   nc, .notIndoorB
 | |
| 
 | |
|     cp   $06
 | |
|     jr   c, .notIndoorB
 | |
| 
 | |
|     inc  d
 | |
| 
 | |
| .notIndoorB:
 | |
|     add  hl, de
 | |
|     ret
 | |
| 
 | |
| 
 | |
| RenderOwlStatueItem:
 | |
|     ldh  a, [$F6] ; map room
 | |
|     cp $B2
 | |
|     jr nz, .NotYipYip
 | |
|     ; Add 2 to room to set room pointer to an empty room for trade items
 | |
|     add a, 2
 | |
|     ldh [$F6], a
 | |
|     call RenderItemForRoom
 | |
|     ldh  a, [$F6] ; map room
 | |
|     ; ...and undo it
 | |
|     sub a, 2
 | |
|     ldh [$F6], a
 | |
|     ret
 | |
| .NotYipYip:
 | |
|     call RenderItemForRoom
 | |
|     ret
 |