En mar ezt a namespace stb dolgokat se ertem
A namespace gyakorlatilag arra jó, hogy egyszerű globális neveket lehessen használni anélkül, hogy mással ütköznének. Itt például
namespace Ep128 {
class Z80 {
...
};
}
a namespace-n belül a "Z80"-ra egyszerűen Z80-ként lehet hivatkozni, azon kívül viszont Ep128::Z80 lesz. De az "using Ep128::Z80" után már itt is csak Z80, az "using namespace Ep128" pedig mindent "importál" a namespace-ből.
Ez C-ben talán így nézne ki:
typedef struct {
...
} Ep128_Z80;
Egyszerű OOP gyakran fordul elő C-ben, ez például:
Ep128_Z80 *Ep128_Z80_new(void);
void Ep128_Z80_delete(Ep128_Z80 *z80);
void Ep128_Z80_run(Ep128_Z80 *z80, int cycles);
C++-ban így néz ki (maradva a fenti példánál):
namespace Ep128 {
class Z80 {
...
public:
Z80();
~Z80();
void run(int cycles);
};
}
és a namespace-n kívül így használható:
Ep128::Z80 *z80 = new Ep128::Z80();
z80->run(4);
delete z80;
Ez a C-hez képest csak szintaktikai eltérés, amit viszont a C nem (vagy legalábbis csak nehézkesen) tud emulálni, az a "virtual" típusú függvények, amelyeket alosztályokban módosítani lehet.
A plus4emu ezekhez kepest hogy all?
A plus4emu meglehetősen pontos (és lassú
), amikor még fejlesztettem, lényegesen pontosabb volt, mint a VICE és a régi nyílt forráskódú (0.32 ?) YAPE, és legalább annyira, mint az akkori Windowsos/zárt kódú YAPE (talán 0.7x vagy 0.8 lehetett). Természetesen azóta ezek fejlődhettek, de a plus4emu (és különösen a 6502/TED emulációja, ami részletesebb, mint bármi az ep128emu-ban) már elég pontos volt ahhoz, hogy gyakorlatilag minden fusson rajta, ami nem igényel valamilyen speciális hardver bővítést, amit az emulátor nem ismer.