A86: Efficiency Problem


[Prev][Next][Index][Thread]

A86: Efficiency Problem




The following is a fragment(?) of code from a game I'm working on called Nerd
Quest I. It's the a part that displays the current weapon on the status
screen. It seems to me that this code is incredibly ineffiecient, and there's
gotta be a faster way of doing this. (Perhaps by using that evil call-counting
thing mentioned earlier?) BTW, if any of you have suggestions for "nerd"
weapons, I'd like to hear them! (I'm especially interested in "single-use"
type ones, e.g. HCl, Test Tube, Inhaler, Bottle Rocket, etc.)

Now, the inefficient code!

GameLoop:
 call CLS ;byte-saving thing
 ...
 ...
 ld a,(Weapon) ;Weapon EQU $F602
 cp 0
 call z,Wp1
 cp 1
 call z,Wp2
 cp 2
 call z,Wp3
 cp 3
 call z,Wp4
 cp 4
 call z,Wp5
 cp 5
 call z,Wp6
 cp 6
 call z,Wp7
 cp 7
 call z,Wp8
 cp 8
 call z,Wp9
 cp 9
 call z,Wp10
 cp 10
 call z,Wp11
 cp 11
 call z,Wp12
 cp 12
 call z,Wp13
 cp 13
 call z,Wp14
 cp 14
 call z,Wp15
 cp 15
 call z,Wp16
 call _puts
 ...
 jp Somewhere

Wp1:
 ld hl,W1
 ret

Wp2:
 ld hl,W2
 ret

Wp3:
 ld hl,W3
 ret

Wp4:
 ld hl,W4
 ret

Wp5:
 ld hl,W5
 ret

Wp6:
 ld hl,W6
 ret

Wp7:
 ld hl,W7
 ret

Wp8:
 ld hl,W8
 ret

Wp9:
 ld hl,W9
 ret

Wp10:
 ld hl,W10
 ret

Wp11:
 ld hl,W11
 ret

Wp12:
 ld hl,W12
 ret

Wp13:
 ld hl,W13
 ret

Wp14:
 ld hl,W14
 ret

Wp15:
 ld hl,W15
 ret

Wp16:
 ld hl,W16
 ret

... ;Whole Lotta Code!

;Data Section
W1: .db "AOL Disk",0
W2: .db "Pocket Protector",0
W3: .db "Uniball Pen",0
W4:  .db "Ruler",0
W5: .db "Ugly Stick",0
W6: .db "Old Game Boy",0
W7: .db "Linux Reference Book",0
W8: .db "Linux CD",0
W9: .db "Cokebottle Glasses",0
W10: .db "AP Calc Textbook",0
W11: .db "MS Intellimouse",0
W12: .db "Macintosh LC",0
W13: .db "Overhead Projector",0
W14: .db "TI-92+",0
W15: .db "486 Motherboard",0
W16: .db "Soldering Iron",0


Follow-Ups: