Age | Commit message (Collapse) | Author |
|
Models that contain UV co-ordinates are now supported,
and will display with a texture wrapped around it, provided
a `bmp` with the same name as the object is in the same
directory as the 3D Model.
|
|
The software rasterizer now samples a texture passed to us from the
GL context. This is currently a bit of a hack, as we should be
scanning from a list of texture units and checking if they are
enabled. For now, this at least gives some visual confirmation
that texturing is working as it should
|
|
|
|
Some very primitive Texture State management. Data can now be
uploaded to textures.
|
|
Texture names can now be allocated via
`glGenTextures` and deallocated via `glDeleteTextures`.
|
|
There is some really wild stuff going on in the OpenGL spec for this..
The Khronos website states that GLsizei is a 32-bit non-negative value
used for sizes, however, some functions such as `glGenTextures` state
that the input `n` could be negative, which implies signage. Most other
implementations of `gl.h` seem to `typedef` this to `int` so we should
too.
|
|
|
|
This is now good enough to make a showcase of :P
|
|
Instead of being its own separate unrelated class.
This automatically makes typed array properties available to it,
as well as making it available to the runtime.
|
|
This is useful for debugging *our* implementation of wasm :P
|
|
|
|
|
|
|
|
This finally works correctly. :tm:
|
|
Prior to this commit, we would be dropping an extra frame.
|
|
This implements the 8 i<n>.truncate.f<n>_<s> instructions.
|
|
This was probably forgotten in the last rewrite, this would make
IsIntegeral<T> not work for floating points.
|
|
This allows the JS side to access the wasm memory, assuming it's
exported by the module.
This can be used to draw stuff on the wasm side and display them from
the js side, for example :^)
|
|
These limits are in units of page size, not bytes.
Also fixes incorrect debug logs.
|
|
This is implemented as a ByteBuffer* in a variant, so its size should
only be increased by an index.
|
|
This allows Wasm code to call javascript functions.
|
|
This impl is *extremely* simple, and is missing a lot of things, it's
also not particularly spec-compliant in some places, but it's definitely
a start :^)
|
|
This replaces the two sloppy copies of the load() function with a
cleaned up implementation:
- Only use the first argument, to load multiple files just call the
function multiple times
- Fix a crash when using any non-string argument
- Throw an error if the file can't be opened instead of logging to
stderr
- Don't use parse_and_run(), which would print the AST of the loaded
file when using -A, for example - it's used either way as the entry
point in both REPL and non-REPL mode, so we already get exception
handling and all that
|
|
|
|
Having load() present is required in order to run test262.
|
|
Previously TCPSocket::send_tcp_packet() would try to send TCP packets
which matched whatever size the userspace program specified. We'd try to
break those packets up into smaller fragments, however a much better
approach is to limit TCP packets to the maximum segment size and
avoid fragmentation altogether.
|
|
Right now Socket::send() assumes that it can send everything in one
go. However, send() is allowed to do partial writes and while that
can't happen at the moment there's nothing that says this can't
happen in the future (like in the next commit).
|
|
With different scoring rules for one-card vs. three-card draw mode, it
makes more sense to separately track their high scores.
|
|
The exact formula used for bonus points seems to vary by implementation.
This uses Klondike Solitaire's formula:
https://en.wikipedia.org/wiki/Klondike_(solitaire)#Scoring
|
|
Currently, the player loses 100 points each time the waste stack is
recycled. In three-card draw mode, it's standard to only lose 20 points
after the third recycle event.
|
|
This invocation will exit immediately. There's also no reason to invoke
stop_game_over_animation here because that's the first thing that will
happen in the call to setup.
|
|
Doesn't make much sense to update the high score on a lost game.
|
|
Previously we'd end up cancelling an animation that was still playing
when the user selects a card.
|
|
When an animation is stopped the cards should be moved to their final
position anyway. Otherwise they might end up getting stuck in the
middle of the animation.
|
|
This changes the game so that more than one hand can be played. Once
one player has 100 or more points the game ends. A score card is shown
between each hand.
Fixes #7374.
|
|
When there are no human players (toggled with Shift-F10) the AI will
continuously start new games when the current game has finished.
|
|
Fixes #7375.
|
|
|
|
|
|
|
|
|
|
|
|
Employ the same technique as SpaceAnalyzer to avoid doing full path
resolution in the kernel over an over. Starting each path resolution
from the base of the directory iterator (using its fd) is significantly
faster and reduces test-js runtime by ~3%.
|
|
|
|
|
|
|
|
|
|
|
|
Passing a null cell pointer is not supported.
|
|
So far we only have two states: Live and Dead. In the future, we can
add additional states to support incremental sweeping and/or multi-
stage cell destruction.
|