
Originally Posted by
mister_e
FYI, in PBP Select Case will be a little less code efficient (talking about code size) than multiple IF-THEN-ELSE... as with ALL other language anyway. Select Case is just easier to read, modify, implement. Save your finger nails...
Try making a Nintendo Emulator in VB using IF's as opposed to Select Case. There's about a %25 difference in speed.
Code:
Select Case instruction(opcode)
Case INS_JMP: ' jmp6502
adrmode opcode
PC = savepc
Case INS_LDA: ' lda6502
adrmode opcode
a = Read6502(savepc)
SetFlags a
Case INS_LDX:
adrmode (opcode)
x = Read6502(savepc)
SetFlags x
Case INS_LDY
adrmode (opcode)
y = Read6502(savepc)
SetFlags y
Case INS_BNE: bne6502
Case INS_CMP: cmp6502
Case INS_STA
adrmode (opcode)
Write6502 savepc, a
Case INS_BIT: bit6502
Case INS_BVC: bvc6502
Case INS_BEQ: beq6502
Case INS_INY: iny6502
Case INS_BPL: bpl6502
Case INS_DEX: dex6502
Case INS_INC: inc6502
Case INS_DEC: dec6502
Case INS_JSR: jsr6502
Case INS_AND: and6502
Case INS_NOP:
Case INS_BRK: brk6502
Case INS_ADC: adc6502
Case INS_EOR: eor6502
Case INS_ASL: asl6502
Case INS_ASLA: asla6502
Case INS_BCC: bcc6502
Case INS_BCS: bcs6502
Case INS_BMI: bmi6502
Case INS_BVS: bvs6502
Case INS_CLC: p = p And &HFE
Case INS_CLD: p = p And &HF7
Case INS_CLI: p = p And &HFB
Case INS_CLV: p = p And &HBF
Case INS_CPX: cpx6502
Case INS_CPY: cpy6502
Case INS_DEA: dea6502
Case INS_DEY: dey6502
Case INS_INA: ina6502
Case INS_INX: inx6502
Case INS_LSR: lsr6502
Case INS_LSRA: lsra6502
Case INS_ORA
adrmode opcode
a = a Or Read6502(savepc)
SetFlags a
Case INS_PHA: pha6502
Case INS_PHX: phx6502
Case INS_PHP: php6502
Case INS_PHY: phy6502
Case INS_PLA: pla6502
Case INS_PLP: plp6502
Case INS_PLX: plx6502
Case INS_PLY: ply6502
Case INS_ROL: rol6502
Case INS_ROLA: rola6502
Case INS_ROR: ror6502
Case INS_RORA: rora6502
Case INS_RTI: rti6502
Case INS_RTS: rts6502
Case INS_SBC: sbc6502
Case INS_SEC: p = p Or &H1
Case INS_SED: p = p Or &H8
Case INS_SEI: p = p Or &H4
Case INS_STX
adrmode (opcode)
Write6502 savepc, x
Case INS_STY
adrmode (opcode)
Write6502 savepc, y
Case INS_TAX: tax6502
Case INS_TAY: tay6502
Case INS_TXA: txa6502
Case INS_TYA: tya6502
Case INS_TXS: txs6502
Case INS_TSX: tsx6502
Case INS_BRA: bra6502
End Select
(This procedure is not my code, but I wish it was)
Bookmarks