* WalrusIRC

You need to have 5 posts and not be part of restricted usergroups in order to use the WalrusIRC embedded shoutbox. However, you can also access our IRC channel called #CodeWalrus via EFnet.

Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.

Messages - Streetwalrus

Pages: [1] 2 3 ... 153
Yep, maybe I'll take a look at it tomorrow. I've had enough of this one for tonight, hehe.

(This should be alright for a double post)

Alright, second line:
Code: [Select]

Code: [Select]

Our disassembly becomes:
Code: [Select]
ld a, l
ld a, h
ld hl, 0x88B0

Line 3:
Code: [Select]
Code: [Select]
So we call our little saferam routine, abusing HL once more to pass it 'H' (0x48) and e (0x65).

Line 4:
Code: [Select]
Code: [Select]

Line 5:
Code: [Select]
Code: [Select]
"o "

Line 6:
Code: [Select]
Code: [Select]

Line 7:
Code: [Select]
Code: [Select]

And finally, line 8:
Code: [Select]
Code: [Select]
Here we skip the first 4 bytes (ld a, l // b_call(PutC)) of the routine, and load H with the character 'd' for the finale.

And we have our result on screen: "Hello World".

That was a beautiful hack and a very fun challenge, @Hayleia, thanks a lot. :D

You're right, I got one byte wrong. Fixed it.

Yeah, pretty much.

So here's a first attempt:
Code: [Select]
#!/usr/bin/env python3

haxmap = {
    "/()/()": "1",
    "+()": "*2",
    "+(+())": "*3",
    "*()": "**2",
    "*(*())": "**3",
    "+(/())": "+1"

hax = "/()/()+(+())*()+()*()+(+())+(/())+(+(+())+())+(/())+(+())+(+())+(/())->{/()/()+()+(+())*()+(+())*()+(+())}^^r/()/()+()*()+(+())+(/())*()+(+())+(+()+())+(/())+(+(+())+())->{/()/()+(+())*()+()*(*())+(+())+(/())+()}^^r/()/()+(+())*()+()*()+(+())+(/())+(+(+())+())+(/())+(+())+(+())->{/()/()+(+())*(*())+()*()+(+())+(/())+()+()}^^r/()/()+()+(+(+())+())*()+(/())+()+(+())+(+()+())+(/())+(+())+(/())->{/()/()+(+())*()+()*(*())+(/())+()+(+())}^^r/()/()+()*()*()*(*())+(/())+(/())+(/())+(+(+()+())+())->{/()/()+(+()+())*()+()*()+()+(+(+())+())}^^r/()/()+()+(+()+())*()+()+(/())+()+(/())+()+()+()+()+(/())+()+()+()->{/()/()+(+()+())*()+()*()+(+(+())+())+(/())+()}^^r(/()/()+()+(+())*()+(+())*()+(+()))()"
decodedhax = ""

while hax:
    for pattern, op in haxmap.items():
        if hax.startswith(pattern):
            decodedhax += op
            hax = hax[len(pattern):]
        decodedhax += hax[0]
        hax = hax[1:]


The first line decodes to the following (after adding new lines where it makes sense :P):
Code: [Select]

Which can be interpreted (by hand) as:
Code: [Select]

So I'm seeing a pattern here already. We're placing code at 0x88B0 and then calling it. :P

Code: [Select]
ld a, l
b_call(HomeUp) ; Not sure about this one
ld a, h
b_call(ClrScrnFull) ; Now we're talking
ld hl, 0x88B0

Not 100% sure what the hell that is for, besides clearing the screen. I'm far from being done.

Yeah fair enough. It still allowed me to see a bit of a pattern, especially for the nesting.

Let's start by formatting this a little, so we can see clearer.
Now, for the edge case of /() that you mentioned, it's simply that if HL is 0, the result will be 65535. So the first two in the program ensure that we start at 1.
So now we can already see that each +() will double HL, +(+()) will triple, etc. *() is square, +(/()) is +1 (or -1 if HL==0), and so forth. I can't actually find more than two levels of parenthesis nesting, so that will simplify things a little. Brb writing a quick python script. :P

And another invalid argument is like Axe vs Lua or Axe vs C++ or Axe vs Java or whatever. Because Lua, C++ and Java don't run on 6MHz z80s. So you don't need to optimize anything and you can keep your code readable. If you had to run Java on a z80, you'd end up writing bytecode, so it would be less readable than any Axe code and still slower.
Also keep in mind that these languages have much, much better compiler optimizations than what Axe is capable of, especially considering the increased complexity of modern architectures.

Not as long as I do it on purpose. If a company used Axe as their language for a product (lol) and I wrote such ugly code, yeah, I'd understand I'd get fired.
I think you're overestimating the quality of corporate code by a long shot. :trollface:

Nice one. Reminds me of this.

Site Discussion & Bug Reports / Re: Featured projects section cleanup
« on: March 19, 2017, 08:51:31 am »
I think it's a good idea.
I haven't been following knightos, but I know it basically makes a bit of progress every few months when sircmpwn feels like working on it. Overall it's going really slowly and I doubt it'll ever be any good.

Site Discussion & Bug Reports / Re: Efnet botnet
« on: March 14, 2017, 01:34:47 am »
Something with juju's isp changing the format of their hostmasks.

Site Discussion & Bug Reports / Re: Efnet botnet
« on: March 14, 2017, 01:32:17 am »

General Help & Troubleshooting / Re: I need help with ELF
« on: March 08, 2017, 06:52:46 pm »
Strip will remove debugging symbols (gcc includes some by default even when you don't compile with -g). What you want is not removing symbols but actual sections. I don't really know how to do that but a possible approach would be to replace the beginning of the main function with a jump to another function that you would add.

Tech, Science, IT discussion & News / Re: Ryzen is out!
« on: March 08, 2017, 09:14:14 am »
Ryzen is quite disappointing...
Someone ran some tests for games and the Intel core i7-7700k not only beats the AMD Ryzen, but it's also 150$ cheaper than the AMD Ryzen 1800...
Worse of all, it's much pricer and not much more powerful than the AMD FX 9370...
And that FX processor does not have that s*** known as AMD PSP !
At least i can strip off Intel ME from some skylake processors but not on AMD's Ryzen processors...

I'm the owner of an AMD FX 6300 with a gigabyte AM3+ motherboard and it's more interesting for me to buy a FX 9370 and a new cooler rather than Amd Ryzen with a new motherboard that comes with it.
Maybe prices will drop at some points though.
Crappy Lake has 20% higher single threaded performance than Ryzen thanks to a ~7% IPC lead and much higher clocks. Ryzen also suffers from a severe lack of optimization in games themselves which have been optimized for Intel platform for all these years. It's a brand new architecture and it will take a little bit of time before performance picks up. The results are still impressive and beyond anything bulldozer could ever dream of. It's faster than my Ivy Bridge i7, and I need the 8 cores for compiling so I'm definitely upgrading.

Also keep in mind that the 1700 overclocks just as well as the 1800X, but is slightly cheaper than a 7700k. This is the chip to buy. And that isn't even counting the SKUs with less cores that are coming up and should deliver similar gaming performance for much less money.

As for the IME and PSP, it looks like AMD is considering supporting coreboot directly, and possibly giving the community more control over the PSP. Considering their outstanding open source support, I have high hopes for this.

Two words: do want.

Gaming / MOVED: Ban the Nintendo Switch
« on: March 01, 2017, 12:22:40 pm »

Pages: [1] 2 3 ... 153

You can also use the following HTML or bulletin board code to share it on your page or forum signature!

Also do not forget to check our affiliates below.
Planet Casio TI-Planet Calc.news BroniesQC BosaikNet Velocity Games