1
0
mirror of https://github.com/lefticus/6502-cpp.git synced 2024-12-22 01:30:03 +00:00
Commit Graph

75 Commits

Author SHA1 Message Date
Marko Mäkelä
ee36c4c08f Define a constexpr VIC_II::Sprite constructor.
write_multi_color_line(), write_line(): Remove.

VIC_II::SpriteLine<bool multicolor>: A line of sprite bitmap data.
The constructor converts one line of data at a time.

VIC_II::Sprite<bool multicolor>: An array of SpriteLine.

This change does not affect the generated binary code.
In the assembler code generated by clang++-4.0, the binary data
will be formatted in groups of 3 bytes instead of 3*21 bytes.
2016-10-09 21:03:28 +03:00
Marko Mäkelä
24df091a6f Introduce VIC_II::HighResSprite and VIC_II::MultiColorSprite.
write_multi_color_line(): Replaces write_multi_color_pixel().

write_line(): Replaces write_pixel().

The generated code is not affected by this change.
2016-10-09 18:35:40 +03:00
Marko Mäkelä
504d13a527 Initialize the sprite data at compilation time, not at runtime.
VIC_II::SPRITE_ALIGNMENT: The MOS 6566/6567/6569 VIC-II expects
sprite data to be aligned at 64 bytes.

VIC_II::SPRITE_STARTING_BANK: Remove.

VIC_II::write_multi_color_pixel(), VIC_II::write_pixel(): Make static.
Write to the specified memory address.

VIC_II::Sprite::Sprite(): Refactored from VIC_II::make_sprite().

VIC_II::enable_sprite(): Take a Sprite reference.

sBall, sBat: Sprite images, declared at global scope.

FIXME: How to ensure that the VIC_II::Sprite addresses do not end up in
the range 0x1000..0x1fff or 0x9000..0x9fff (where the character generator
ROM is overriding RAM)? Any portable alternative to using GCC-style
__attribute__((section("sprites"))) and a linker script?

Note: Declaring the sprite images as static const objects in main()
would cause clang++4.0-svn279916-1 to generate code for initializing them.
So, we will declare the objects in the global scope.

This has been tested on a Commodore 64 with the following steps:

clang++-4.0 -m32 -O3 -std=c++1z -S pong.cpp
x86-to-6502 < pong.s > pong.asm
edit pong.asm to define code start at 0x900 and to adapt the output
invoke some 6502 assembler
SYS2304 to run the output on a Commodore 64
2016-10-06 18:00:58 +03:00
Marko Mäkelä
4ed4e6a94c Implement some more instructions, and fix typos.
Implement 16-bit shrl (new instruction).

Implement movl with a 16-bit literal value. Add the 6502 ROR instruction.
2016-10-06 17:41:33 +03:00
Jason Turner
88d197e0d7 Docs and cleanups of pong example 2016-09-20 15:14:10 -06:00
Jason Turner
9b204a4af0 Pong rework-working 2016-09-08 19:16:52 -06:00
Jason Turner
aa9657f0b8 Handle retl to some extent 2016-09-08 18:57:10 -06:00
Jason Turner
03d360ac56 Cleanups for Conf 2016-08-24 16:56:07 -06:00
Jason Turner
e3ebc954fa Reorganize file structure 2016-08-24 16:55:08 -06:00
Jason Turner
74b2f129bf Pong fully working 2016-08-13 08:13:27 -06:00
Jason Turner
70aa76dce9 Basic two player pong working 2016-08-09 14:02:56 -06:00
Jason Turner
68d93b0a1e Several CPU translator fixes 2016-08-08 17:05:16 -06:00
Jason Turner
6dcb39e300 Automatically reroute long branch instructions 2016-08-06 21:01:01 -06:00
Jason Turner
d59fbdaf4c Reorg of register handling 2016-08-06 19:58:24 -06:00
Jason Turner
622354e6b2 Updates to work better with compiler explorer
yy
2016-08-06 13:08:24 -06:00
Jason Turner
974c907a3b Support much more translation
* many opcodes added
 * more registers
 * bug fixes
 * parsing of clang output enabled
2016-07-15 22:24:59 -06:00
Jason Turner
6439a13113 Fix hex/dec handling 2016-07-10 13:10:52 -06:00
Jason Turner
87f1962f2b Add some docs and test and cmake support 2016-07-07 15:48:27 -06:00
Jason Turner
8a0b8a107d Put readme.md in correct place 2016-07-07 15:26:12 -06:00
Jason Turner
b5dd153cd4 Add readme.md with basic usage 2016-07-07 15:21:40 -06:00
Jason Turner
76bb4371a7 Add xor AX,AX trick, rts support 2016-07-07 14:58:39 -06:00
Jason Turner
04e0a8dbc9 Use Y over A when possible 2016-07-07 11:20:41 -06:00
Jason Turner
d2e2f311c5 Warning fixes 2016-07-07 11:08:28 -06:00
Jason Turner
f69150b386 Add support for D register, more opcodes 2016-07-07 10:51:54 -06:00
Jason Turner
efcb6fa7ac Initial commit 2016-07-06 18:35:40 -06:00