[QUOTE=Asgard;39288161]That IDE looks beautiful, what is it?[/QUOTE]
Kate duh.
Also the font might look better with ubuntu mono
[IMG]http://i.imgur.com/aexCWla.png[/IMG]
[QUOTE=Liquid Helium;39285245]1fps to a solid 60. Optimization!
[vid]https://dl.dropbox.com/u/17738517/Videos/voxelgame01.webm[/vid][/QUOTE]
Could you please tell me the name of that map or send me the map?
It seems like an awesome TTT map if I can convert it to BSP.
[QUOTE=Lexic;39282383]wat?[/QUOTE]
Stores path to SD card in Android_SDPath string.
I don't want to put extern on global level, because I use Android_SDPath only in a single function outside of the file it's declared in.
[QUOTE=vombatus;39288268][IMG]http://i.imgur.com/aexCWla.png[/IMG][/QUOTE]
What color scheme is that?
[QUOTE=Mega1mpact;39288427]Could you please tell me the name of that map or send me the map?
It seems like an awesome TTT map if I can convert it to BSP.[/QUOTE]
ZombieIsland.vxl from Ace of Spades
[QUOTE=DarKSunrise;39288174]Got effect parameters done.
[thumb]http://www.1337upload.net/files/squares.png[/thumb][/QUOTE]
What's that Sublime Text theme?
[QUOTE=ArgvCompany;39288937]What's that Sublime Text theme?[/QUOTE]
It's [url=https://github.com/buymeasoda/soda-theme]Soda Dark[/url] with the [url=https://github.com/mrlundis/Monokai-Dark-Soda.tmTheme]Monokai Dark Soda[/url] color scheme.
[QUOTE=DarKSunrise;39288468]What color scheme is that?[/QUOTE]
Color scheme by carlcalderon "Calydon"
Oh and forgot to actually post something pretty
[IMG]http://i.imgur.com/CpCjMaj.png[/IMG]
it's an old pic of .ms3d model being loaded. Right now I am working on some sort of roguelike but there's nothing to show yet.
I wrote a quick prototype of a game where you play in a 2D world on the side of 3D cubes, and you can move the cubes around and change the 2D world that way.
Really really unpolished, only worked for about 3-4 hours on it so far.
[img]http://i.imgur.com/F6plkbW.gif[/img]
I'm gonna add another 2D world on the "right" side of the cube, so changing one of the worlds will affect the other.
maurice why are you so creative
ortho robot mari0 fez rubix cube
shittiest pageking ever.
[editline]za[/editline]
I feel bad, here's a screenshot of my Spine game engine:
[img]http://puu.sh/1Q7WX[/img]
Here's a demo of the space game I was working on earlier:
[url]http://qwook.github.com/space/[/url]
Just drag the buttons to make the ship travel.
[QUOTE=Maurice;39289384]I wrote a quick prototype of a game where you play in a 2D world on the side of 3D cubes, and you can move the cubes around and change the 2D world that way.
Really really unpolished, only worked for about 3-4 hours on it so far.
[img]http://i.imgur.com/F6plkbW.gif[/img]
I'm gonna add another 2D world on the "right" side of the cube, so changing one of the worlds will affect the other.[/QUOTE]
Mari0 networked version where?!
[QUOTE=Maurice;39289384]I wrote a quick prototype of a game where you play in a 2D world on the side of 3D cubes, and you can move the cubes around and change the 2D world that way.
Really really unpolished, only worked for about 3-4 hours on it so far.
[IMG]http://i.imgur.com/F6plkbW.gif[/IMG]
I'm gonna add another 2D world on the "right" side of the cube, so changing one of the worlds will affect the other.[/QUOTE]
Obligatory video from a game called perspective, made by students at [URL="https://www.digipen.edu/"]digipen[/URL]
:v:
[video=youtube;SS4r9Fq3beU]http://www.youtube.com/watch?v=SS4r9Fq3beU[/video]
obligatory ortho robot
[media]http://www.youtube.com/watch?v=VYoKezEJoic[/media]
^ i think this was released in 2011 and perspective was released in 2012
the main thing being that ortho robot was also made by maurice
[QUOTE=Hentie;39290084]obligatory ortho robot
[media]http://www.youtube.com/watch?v=VYoKezEJoic[/media]
^ i think this was released in 2011 and perspective was released in 2012
the main thing being that ortho robot was also made by maurice[/QUOTE]
If you really want to get into it, Echochrome was released for the PSP in 2008, but it shouldn't really matter. Point is, Maurice has an awesome idea with awesome potential and given his history will probably come out with an awesome game.
[QUOTE=false prophet;39289903]Mari0 networked version where?![/QUOTE]
He's not working on it, I work on it on my free time.
[QUOTE=ben1066;39282841]My assembler and my emulator now both support all of my planned addressing modes and a few more opcodes have been added in the emulator. Because of how my assembler works, it doesn't need any modification for new opcodes other than the addition of an entry to an enum and to an array which is in a class library shared with the emulator. In addition my assembler will now give useful errors with the line number and you can get a listing of lines to addresses. I plan to later add support to my emulator to step through code using this method.
[CODE]mov R00, Test
tst
mov R01, 1
tst
not R01
tst
mov R02, 7
tst
and R02, R00
nop ; No Operation
tst ; Test function - prints to emulator console
jmp Test
tst ; Test function - prints to emulator console
Test: ; Label
; An empty line just to screw with my parser
tst ; Test function
jmp R00[/CODE]
to
[CODE]20 01 00 00 21 01 20 01 01 00 01 01 30 00 01 01 20 01 02 00 07 01 31 00 02 00 00 01 10 10 00 21 01 01 10 00 00[/CODE]
and also
[CODE]0x0000: mov R00, Test
0x0005: tst
0x0006: mov R01, 1
0x000B: tst
0x000C: not R01
0x000F: tst
0x0010: mov R02, 7
0x0015: tst
0x0016: and R02, R00
0x001A: nop ; No Operation
0x001B: tst ; Test function - prints to emulator console
0x001C: jmp Test
0x0020: tst ; Test function - prints to emulator console
0x0021: tst ; Test function
0x0022: jmp R00[/CODE][/QUOTE]
Hi there,
When you say you're designing your own architecture, are you planning on actually turning this into hardware? Or is this just an instruction-set architecture?
If you do plan on turning this into a real computer, you'll have enough on your plate just with simple timing problems (stuff gets weird >1MHz), and things like multiple addressing modes are going to bite you in the arse in terms of extra complexity.
At least start giving a bit of thought to actual implementation, it'll save you a lot of trouble :v:
[IMG]http://i.minus.com/itBfwcuBfI06S.png[/IMG]
Gave my emulator a GUI. The left is the memory of the emulator which can be edited whilst it's running, at the bottom are the registers, R0 - R15 and to the left is the source file associated. I'm using ScintillaNET to highlight it and again using my shared enum of opcodes to ensure that I will always highlight all opcodes. The blue highlight shows where the PC (R15) currently points, in this example it's equivalent to tst on line 16.
[QUOTE=r0b0tsquid;39290486]Hi there,
When you say you're designing your own architecture, are you planning on actually turning this into hardware? Or is this just an instruction-set architecture?
If you do plan on turning this into a real computer, you'll have enough on your plate just with simple timing problems (stuff gets weird >1MHz), and things like multiple addressing modes are going to bite you in the arse in terms of extra complexity.
At least start giving a bit of thought to actual implementation, it'll save you a lot of trouble :v:[/QUOTE]
I plan on eventually, in the distant future creating an FPGA implementation of this yes. I know that some such you have mentioned will be complex, but it shouldn't be too terrible (I hope). I have put some thought into the decisions I've made with regards to how possible it will be to implement, but yes up until now it has been somewhat emulator oriented.
PC is a general purpose register? I.e. you can perform jumps by writing to it?
At some point you'll probably find that there's a bit of redundancy in your design, you'll save yourself hassle by paring it down to the bare minimum.
Good luck though, FPGA's probably an easier option.
[QUOTE=r0b0tsquid;39290733]PC is a general purpose register? I.e. you can perform jumps by writing to it?
At some point you'll probably find that there's a bit of redundancy in your design, you'll save yourself hassle by paring it down to the bare minimum.
Good luck though, FPGA's probably an easier option.[/QUOTE]
I guess you could perform a jump by writing to it however I have a jmp opcode for the off chance that I ever actually get this onto an FPGA and do pipeline it. I'd have to invalidate the pipeline on a jmp. I made it "general purpose" really just to make it a bit easier since I can refer to any of the 16 registers by just 1 byte, and it's just an index.
Did jimbomcb ever release his TF2 web spectator stuff?
I ended up doing this last night, plan to remake what he was doing unless he posted it somewhere.
[img]http://i.imgur.com/RwQsfFE.png[/img]
I was trying to understand your instruction format, is this about right?
[code]mov R00, Test -> 20 01 00 00 21
[mov const][reg 0][$0021 - 16 bits]
tst -> 01
mov R01, 1 -> 20 01 01 00 01
[mov const][reg 1][$0001 - 16 bits]
not R01 -> 30 01 01
[not regst][reg 1]
tst -> 01
mov R02, 7 -> 20 01 07 00 07
[mov const][reg 7][$0007 - 16 bits]
tst -> 01
and R02, R00 -> 31 00 02 00
[and][regs][reg 2][reg 0]
nop -> 00
tst -> 01
jmp Test -> 10 10 00 21
[jmp][const][$0021 - 16 bit address]
tst -> 01 (never gets executed)
Test: : $0021
tst -> 01
jmp R00 -> 10 00 00
[jmp][(register)][reg 0]
00: 20 01 00 00 21 01 20 01
08: 01 00 01 01 30 00 01 01
10: 20 01 02 00 07 01 31 00
18: 02 00 00 01 10 10 00 21
20: 01 01 10 00 00[/code]
This is essentially a CISC machine, good luck with pipelining.
[editline]20th January 2013[/editline]
[QUOTE=ben1066;39290770]I guess you could perform a jump by writing to it however I have a jmp opcode for the off chance that I ever actually get this onto an FPGA and do pipeline it. I'd have to invalidate the pipeline on a jmp. I made it "general purpose" really just to make it a bit easier since I can refer to any of the 16 registers by just 1 byte, and it's just an index.[/QUOTE]
So you'd also have to invalidate your pipeline on a mov R15 instruction...
[QUOTE=r0b0tsquid;39291025]I was trying to understand your instruction format, is this about right?
[code]mov R00, Test -> 20 01 00 00 21
[mov const][reg 0][$0021 - 16 bits]
tst -> 01
mov R01, 1 -> 20 01 01 00 01
[mov const][reg 1][$0001 - 16 bits]
not R01 -> 30 01 01
[not regst][reg 1]
tst -> 01
mov R02, 7 -> 20 01 07 00 07
[mov const][reg 7][$0007 - 16 bits]
tst -> 01
and R02, R00 -> 31 00 02 00
[and][regs][reg 2][reg 0]
nop -> 00
tst -> 01
jmp Test -> 10 10 00 21
[jmp][const][$0021 - 16 bit address]
tst -> 01 (never gets executed)
Test: : $0021
tst -> 01
jmp R00 -> 10 00 00
[jmp][(register)][reg 0]
00: 20 01 00 00 21 01 20 01
08: 01 00 01 01 30 00 01 01
10: 20 01 02 00 07 01 31 00
18: 02 00 00 01 10 10 00 21
20: 01 01 10 00 00[/code]
This is essentially a CISC machine, good luck with pipelining.
[editline]20th January 2013[/editline]
So you'd also have to invalidate your pipeline on a mov R15 instruction...[/QUOTE]
Close but not quite, the second byte specifies the addressing mode of the following operands. I guess yes you could just invalidate on a mov R15, it just made more sense to have a jmp instruction that would invalidate every time.
Made a system where you can attach shapes to each other. It works with any shape at any angle.
[img]http://i.imgur.com/O5AQfyU.gif[/img]
Now to make the code readable.
I wrote a component framework today. Sorry for the wall of text, I tried to use less classes but it became convoluted.
[csharp]using Components;
using System;
namespace ComponentTest
{
abstract class ABase { public abstract int Number { get; } }
class A : ABase
{
public override int Number { get { return 1; } }
[ComponentLink]
B B { get; set; }
public void PrintBNumber() { Console.WriteLine(B.Number); }
}
class B
{
public int Number;
public B(int number) { Number = number; }
[ComponentLink]
ABase ABase { get; set; }
public void PrintANumber() { Console.WriteLine(ABase.Number); }
}
class C
{
string _format;
public C(string format) { _format = format; }
[ComponentLink]
A A { get; set; }
[ComponentLink]
B B { get; set; }
public void PrintFormat() { Console.WriteLine(_format, A.Number, B.Number); }
}
class D
{
public event Action<int> NumberEvent;
private void OnNumberEvent(int number) { if (NumberEvent != null)NumberEvent(number); }
public void SendNumber()
{
OnNumberEvent(0xD);
}
}
class E
{
public event Action<int> NumberEvent;
private void OnNumberEvent(int number) { if (NumberEvent != null)NumberEvent(number); }
public void SendNumber()
{
OnNumberEvent(0xE);
}
}
class F
{
[EventLink(typeof(D), "NumberEvent")]
[EventLink(typeof(E), "NumberEvent")]
void NumberEventHandler(int number)
{
Console.WriteLine("Number received by F: " + number);
}
}
class G
{
[EventLink(typeof(D), "NumberEvent")]
[EventLink(typeof(E), "NumberEvent")]
void NumberEventHandler(int number)
{
Console.WriteLine("Number received by G: " + number);
}
}
class Program
{
static void Main(string[] args)
{
var a = new A();
var b = new B(2);
var collection = new ComponentCollection(a, b);
b.PrintANumber();
a.PrintBNumber();
collection.Remove(b);
collection.Add(new B(3));
a.PrintBNumber();
var c1 = new C("A = {0}, B = {1}");
var c2 = new C("(A, B) = ({0}, {1})");
collection.AddRange(c1, c2);
c1.PrintFormat();
c2.PrintFormat();
Console.WriteLine();
var d = new D();
var e = new E();
var f = new F();
var g = new G();
collection.AddRange(d, e, f, g);
d.SendNumber();
e.SendNumber();
Console.WriteLine();
collection.Remove(d);
collection.Remove(f);
d.SendNumber();
e.SendNumber();
Console.ReadLine();
}
}
}[/csharp][code]1
2
3
A = 1, B = 3
(A, B) = (1, 3)
Number received by F: 13
Number received by G: 13
Number received by F: 14
Number received by G: 14
Number received by G: 14[/code]
Linking conflicts are checked in debug mode.
It's not very optimized right now as the links are cached as PropertyInfo/Method- and EventInfo, without the getter and setter/add and remove methods. (Still seems fast enough so far.)
I'm considering to add some kind of list link but that would most likely result in very messy code. Maybe when I need it at some point.
[QUOTE=ben1066;39291086]Close but not quite, the second byte specifies the addressing mode of the following operands. I guess yes you could just invalidate on a mov R15, it just made more sense to have a jmp instruction that would invalidate every time.[/QUOTE]
By "const" I meant an immediate addressing mode vs. indirectly referring to the values in the registers, not sure how clear the notes were. What's the 10 in the jmp Test then? Is that immediate addressing of a 2 byte value?
Yeah, I'm saying that by making it writeable you're going to have two cases where the pipeline is invalidated, meaning more decode logic. I'm not trying to say that writing to PC directly is a sensible way to do jumps on any pipelined processor.
[QUOTE=Frugle;39291097]Made a system where you can attach shapes to each other. It works with any shape at any angle.
Now to make the code readable.[/QUOTE]
You're going to use it for a ship editor right? right?!
[editline]20th January 2013[/editline]
because that would be amazing
[QUOTE=r0b0tsquid;39291152]By "const" I meant an immediate addressing mode vs. indirectly referring to the values in the registers, not sure how clear the notes were. What's the 10 in the jmp Test then? Is that immediate addressing of a 2 byte value?
Yeah, I'm saying that by making it writeable you're going to have two cases where the pipeline is invalidated, meaning more decode logic. I'm not trying to say that writing to PC directly is a sensible way to do jumps on any pipelined processor.[/QUOTE]
Ah right yes, you're correct, the 10 in jmp Test indicates immediate addressing of a 2 byte value on the first operand. 01 is the same, but for the second byte.
[QUOTE=NovembrDobby;39291253]You're going to use it for a ship editor right? right?!
[editline]20th January 2013[/editline]
because that would be amazing[/QUOTE]
Yes.
Sorry, you need to Log In to post a reply to this thread.