For the second stage of the final SPO600 project, the objective is to select one open-source project of our choosing, locate the SIMD code and examine its purpose. Professor Chris provided many open-source project options for us; I decided to go with ffmpeg. ffmpeg is a multimedia library that is used for transcoding formats, video editing (trimming, concatenating, scaling, effects, etc.). This library has been in development since its release on December 20, 2000, with the most recent commit only being a few hours ago as shown below. I decided to take a dive into their repository, searching for any sign of SIMD code. SIMD stands for Single Instruction, Multiple Data and is a parallel processing technique that is often used for 3D Graphics and multimedia applications. This makes sense because images have two dimensions, and videos even include time as an extra 'dimension' as well. Parallel processing is crucial to operate efficiently on multimedia like that. This is what...
Hello everybody, and welcome to the third lab of SPO600. After studying 6502 directives last class, specifically DCB, we're going to use it this lab in our very first creative piece of work using 6502. The objective in this lab is to create a graphic animation using the 6502 emulator colors. We're given four options to achieve this: Bouncing Graphic Numeric Display Pong Kaleidoscope I've decided to go with the bouncing graphic. To achieve my design, I copied the code example to display a ball on the screen. This code sample uses DCB to pre-define all the locations and load them into the a register. define WIDTH 4 ; width of graphic define HEIGHT 4 ; height of graphic lda #$25 ; create a pointer at $10 sta $10 ; which points to where lda #$02 ; the graphic should be drawn sta $11 lda #$00 ; number of rows we've drawn sta $12 ; is stored in $12 ldx #$00 ; index for data ldy #$00 ; index for screen column draw: lda data,x sta ($10),y...
Hey guys, and welcome back to my SPO600 blog. In this class, we took a deeper dive into 6502 Assembler. This time, we learnt some directives. Directives are instructions that set behavior for how the compiler processes input. Here's a few examples. define This directive is a very simple text replacement, which stores a given value into any word you provide to it. For example, 'define WHITE $01' makes it so that any time you mention 'WHITE', it gets substituted with $01. This is really useful if some particular values are hard to remember. In this case, $01 refers to the white color, which is definitely easy to forget. DCB DCB (define constant byte) stores a value in memory, at the very end of the memory. Once that value is declared, it can be called from the main code using LDA. The value must be either a quoted string or a numeric expression that evaluates to an integer between 128 to 255. I was interested to see the parallels between 6502 directives and C++ direct...
Comments
Post a Comment