Views: 874,526,025
32 users online: AmazingChest, AndreDK7, Arash, autisticsceptile1993,  bebn legg,  brickblock369, callmeCMDR, CourtlyHades296, crowhander,  Deeke, Diba9Br, FlashHacks, foamywubba, HammerBrother,  idol, jardeson01,  Katerpie,  KevinM, KiloMinimo, Knight of Time, Koopster, Milu64, RaeNidae, Recipate, Redwykelz, Rilla Roo, Rykon-V73, Shoujo, Sr Ramon,  Tamaki, UTF, WhiteYoshiEgg - Guests: 75 - Bots: 173 Users: 48,729 (2,432 active)
Latest: SeanyBoi5
Not logged in.
Posts by p4plus2
p4plus2's Profile - Posts by p4plus2
Pages: « 1 2 3 469 70 »
You can run LM from WINE, which should run fine on a mac computer. So far I have not found any LM issues with WINE. Also if you have mono install you should be able to get the linux patched version of BTSD running on you mac. As for a .spc player you could use Audio overload, which has a mac version.

Links for the above mentioned programs: (I recommend using wine 1.1.27 dev version and not stable, dev has many many many more bug fixes.)

Also on the note of spc files you can try this
(translation link below)

Crossover if I am not mistaken is paid, and is actually a sister project to WINE in the long run. Good luck with whichever you choose.
You could always try virtualbox? That would allow you to run a copy of windows inside of your mac install.

I am running Fedora 11 and with WINE I managed to get LM working without any issues(Make sure to use the development version and not stable version). Try running LM from terminal and see if WINE shows and errors. Fixme notices can be ignored, so if you see those there generally should not be a problem.

If you get any errors post them back here and we can try to work something out.
Well, I just coded up my first block and when I try to add it using BTSD with linux patch(I run on fedora 11) it crashes the program. The output below is what I receive when it crashes from terminal:

xdg-open: unexpected argument 'temp.asm'
Try 'xdg-open --help' for more information.
System.IO.FileNotFoundException: Could not find file "/mnt/store/download/SNES ROMS/smw stuff/btsd-linux/temp.bin".
File name: '/mnt/store/download/SNES ROMS/smw stuff/btsd-linux/temp.bin'
  at System.IO.FileStream..ctor (System.String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean anonymous, FileOptions options) [0x00000] 
  at System.IO.FileStream..ctor (System.String path, FileMode mode, FileAccess access, FileShare share) [0x00000] 
  at (wrapper remoting-invoke-with-check) System.IO.FileStream:.ctor (string,System.IO.FileMode,System.IO.FileAccess,System.IO.FileShare)
  at System.IO.File.Open (System.String path, FileMode mode, FileAccess access, FileShare share) [0x00000] 
  at System.IO.File.ReadAllBytes (System.String path) [0x00000] 
  at Blocktool_Super_Deluxe.xkasIO.Assemble (Int32 offset, Blocktool_Super_Deluxe.BlockInfo bi, Boolean issa1) [0x00000] 
  at Blocktool_Super_Deluxe.Hack.InsertBlockROM (Blocktool_Super_Deluxe.BlockInsertInfo bii, Blocktool_Super_Deluxe.BlockDB bdb, Blocktool_Super_Deluxe.ROM rom) [0x00000] 
  at Blocktool_Super_Deluxe.Main.MainMenu_Insert_Click (System.Object sender, System.EventArgs e) [0x00000] 
  at System.Windows.Forms.ToolStripItem.OnClick (System.EventArgs e) [0x00000] 
  at System.Windows.Forms.ToolStripMenuItem.OnClick (System.EventArgs e) [0x00000] 
  at System.Windows.Forms.ToolStripMenuItem.HandleClick (System.EventArgs e) [0x00000] 
  at System.Windows.Forms.ToolStripItem.FireEvent (System.EventArgs e, ToolStripItemEventType met) [0x00000] 
  at (wrapper remoting-invoke-with-check) System.Windows.Forms.ToolStripItem:FireEvent (System.EventArgs,System.Windows.Forms.ToolStripItemEventType)
  at System.Windows.Forms.ToolStrip.OnMouseUp (System.Windows.Forms.MouseEventArgs mea) [0x00000] 
  at System.Windows.Forms.ToolStripDropDown.OnMouseUp (System.Windows.Forms.MouseEventArgs mea) [0x00000] 
  at System.Windows.Forms.Control.WmLButtonUp (System.Windows.Forms.Message& m) [0x00000] 
  at System.Windows.Forms.Control.WndProc (System.Windows.Forms.Message& m) [0x00000] 
  at System.Windows.Forms.ScrollableControl.WndProc (System.Windows.Forms.Message& m) [0x00000] 
  at System.Windows.Forms.ToolStrip.WndProc (System.Windows.Forms.Message& m) [0x00000] 
  at System.Windows.Forms.ToolStripDropDown.WndProc (System.Windows.Forms.Message& m) [0x00000] 
  at System.Windows.Forms.Control+ControlWindowTarget.OnMessage (System.Windows.Forms.Message& m) [0x00000] 
  at System.Windows.Forms.Control+ControlNativeWindow.WndProc (System.Windows.Forms.Message& m) [0x00000] 
  at System.Windows.Forms.NativeWindow.WndProc (IntPtr hWnd, Msg msg, IntPtr wParam, IntPtr lParam) [0x00000] 

Just in case my block could be causing this here is my blocks source(This is my first block so it could be the problem).

Even if my code is right any pointers on how I could do this more efficiently would be nice.

;Gives mario cape(default) if the on/off block is set to On or a flower(default) if 
;The on/off switch is set to Off.

JMP Mario : JMP Mario : JMP Mario : JMP Return : JMP Return : JMP Return : JMP Return

;#$00 = Small, #$01 = Big, #$02 = Cape, #$03 = Fire
!on_powerup = #$02
!off_powerup = #$03


	PHA			;store A
	LDA $14AF		;load on/off block 
	CMP #$00		;Check if on
	BNE Off			;if off branch to off
	JMP On			;else jump to on
	LDA !off_powerup	;load power up into A for off state
	STA $19			;store the power up
	JMP Done		;jump to done
	LDA !on_powerup		;load power up into A for on state
	STA $19			;store the power up
	JMP Done		;jump to done
	PLA			;restore A
	RTL			;return


	RTL			;return
Originally posted by Noobish Noobsicle
I'm fairly sure it's not your block that's doing it. There are two lines of the error that seem like the main problem.

xdg-open: unexpected argument 'temp.asm'

It looks like a software issue with Xkas.

System.IO.FileNotFoundException: Could not find file "/mnt/store/download/SNES ROMS/smw stuff/btsd-linux/temp.bin".

Again, looks like Xkas failed to initialize and create temp.bin, so BTSD crashed while trying to find it.

I tried creating the temp.bin file yesterday(I tried various permissions on the file as well), but it didn't help. I also tried running it with mono on wine, which would not even start the program. When I create a temp.bin file right when the program crashes the file would be deleted.

Also, if it helps Xkas crashes right as I go to insert a patch as well.

Also, as for the code, thanks a lot for showing me how I could optimized! Glad to see what I created was not that far off from being efficient.(Also glad that was not the problem with the crash :P)

Question, what is the difference between "BRA Done" and "JMP Done"? From what I found doing a quick search it is only 8bit vs 16bit, is that the only difference? Thanks in advance!
If I remember correctly a .dmg file is a "image"(similar to ISO). Try it may help.
Thanks for the JMP/BRA breakdown. I suppose I will just run BTSD in virtual box.
Hey, the following code works but I am just wondering if there is anything I can change to improve it a bit. I am still a bit new to ASM, so I just want to make sure I am doing things in a rather efficient way :).

;Block name:Cape destroyed block
;Block author: P4plus2
;Corrections from: N/A
;Date released: 08-22-2009
;Date updated: 08-22-2009
;Version: 1.0.0
;A block Mario may only destroy with a cape.
;Acts like block: 130
;BTSD compatible: Yes
;BT compatible: No

JMP Return : JMP Return : JMP Return : JMP Return : JMP Return : JMP Destroy : JMP Return

;To configure, change the following variables to something else listed below
;#$00 = normal shatter, #$01 = colorful shatter
!shatter_type = #$00

	PHA			;Save A
	PHB 			;Push current bank
	LDA #$02 		;Set bank to change to
	PHA 			;Push A to stack
	PLB 			;Pull bank (now $02) 
	LDA !shatter_type	;Which shatter to use
	JSL $028663 		;Run shatter block routine
	PLB 			;Restore original bank
	LDA #$02 		;Set tile to 02
	STA $9C 		;Store tile to be generated
	JSL $00BEB0 		;Generate tile routine
	PLA			;Restore A
	RTL			;Return 

Originally posted by kenSMW238
I'm getting trouble getting the Overworld exits to work,could someone help?

What part are you having trouble with?

Also check this video out it may help you
Originally posted by Kaijyuu
No particular reason to push and pull A at the start/end, but other than that I see no inefficiencies.

I thought I read somewhere you should store and then restore A to prevent A from being changed by your block. I may have misread something though. I'll remove it and see if everything still works correctly.
I have a quick question, how would I find out what item mario is carrying? In the RAM map I found $1470 stores the carrying flag, but I would like to figure out the exact item. Preferably I would like to check if a certain color baby yoshi is being held. If anybody know or can link me to the values that each item would be(or at least the yoshis).

In all.log the closest thing I found was:
CODE_01AA58:        A5 15         LDA RAM_ControllerA       
CODE_01AA5A:        29 40         AND.B #$40                
CODE_01AA5C:        F0 16         BEQ CODE_01AA74           
CODE_01AA5E:        AD 70 14      LDA.W $1470               ; \ Branch if carrying an enemy... 
CODE_01AA61:        0D 7A 18      ORA.W RAM_OnYoshi         ;  | ...or on Yoshi 
CODE_01AA64:        D0 0E         BNE CODE_01AA74           ; / 
CODE_01AA66:        A9 0B         LDA.B #$0B                ; \ Sprite status = Being carried 
CODE_01AA68:        9D C8 14      STA.W $14C8,X             ; / 
CODE_01AA6B:        EE 70 14      INC.W $1470               ; Set carrying enemy flag 
CODE_01AA6E:        A9 08         LDA.B #$08                
CODE_01AA70:        8D 98 14      STA.W RAM_PickUpImgTimer  
Return01AA73:       60            RTS                       ; Return 

CODE_01AA74:        B5 9E         LDA RAM_SpriteNum,X       ; \ Branch if Key 
CODE_01AA76:        C9 80         CMP.B #$80                ;  | 
CODE_01AA78:        F0 3D         BEQ CODE_01AAB7           ; / 
CODE_01AA7A:        C9 3E         CMP.B #$3E                ; \ Branch if P Switch 
CODE_01AA7C:        F0 34         BEQ CODE_01AAB2           ; / 
CODE_01AA7E:        C9 0D         CMP.B #$0D                ; \ Branch if Bobomb 
CODE_01AA80:        F0 15         BEQ CODE_01AA97           ; / 
CODE_01AA82:        C9 2D         CMP.B #$2D                ; \ Branch if Baby Yoshi 
CODE_01AA84:        F0 11         BEQ CODE_01AA97           ; / 
CODE_01AA86:        C9 A2         CMP.B #$A2                ; \ Branch if MechaKoopa 
CODE_01AA88:        F0 0D         BEQ CODE_01AA97           ; / 
CODE_01AA8A:        C9 0F         CMP.B #$0F                ; \ Branch if not Goomba 
CODE_01AA8C:        D0 06         BNE CODE_01AA94           ; / 
ADDR_01AA8E:        A9 F0         LDA.B #$F0                
ADDR_01AA90:        95 AA         STA RAM_SpriteSpeedY,X    
ADDR_01AA92:        80 03         BRA CODE_01AA97           

Mod edit: Those blank lines were an eyesore. This looks mubh better.
Alright I will mess around with my block and see if I can figure it out, thanks for the info :)
This probably won't work and if just stab in the dark but here it goes...

The best thing I could think(and it doesn't sound very efficient) would be at the hijack the fireball check and instead have that jump to a routine you wrote for two more fireballs then duplicate the ALL of the fire flowers code into the freespace you jump to changing ram address for each fireball accordingly. This may not work very well or at all, just my hypothesis. But providing it works it would be something like this:

LDX.B #$09                ; \ Find a free fireball slot (08-09)
LDA.W RAM_ExSpriteNum,X   ;  |
BEQ CODE_00FEB5           ;  |
DEX                       ;  |
CPX.B #$07                ;  |
BNE CODE_00FEAA           ;  |
RTS                       ; / Return if no free slots

JMP wherever

LDX.B #$09                ; \ Find a free fireball slot (08-09)
LDA.W RAM_ExSpriteNum,X   ;  |
BEQ CODE_00FEB5           ;  |
DEX                       ;  |
CPX.B #$07                ;  |
BNE CODE_00FEAA           ;  |
;your code to check for two more places here

;all the code for two fireballs goes here, but modified for two separate fireballs.

If this post is way to wrong, just say so and I'll edit it out.
If you could design one language, how would you design it? Would it be web based, desktop based, both perhaps? To keep this thread interesting try to give some examples of what you would have it look like. For example mine would go something like this(though I have many ideas for languages...)


`this is a comment

int main(string *argv)

     int numb = array(123,321,321,123);
     int 10*numb_two; `array with 10 elements
     io.get(numb_two:0, "\n");

     if(count(argv) > 0)[
          io.echo ("you have " + count(argv) + " arguments");
          io.echo ("This message was sent at " + sys.time());
          io.echo (argv:0);
          return 0;
          io.echo ("no arguments given");
          io.echo ("This message was sent at " + sys.time());
          return 0;

      return ERROR_FATAL `this should never be reached


The idea behind this language is to organise code slightly better by using [] for conditional statements and {} for function type declarations. The language also makes arrays a bit shorter to make and access using only one character the * for assigning and : for access. The language is not perfect for example the comment ` is a bit awkward...

Now, lets see what others can come up with!

r, g, b
14, A, 5

Correct me if I am wrong but this is how I believe it works:
Because red starts at hex 20 you add 20
Because green starts at hex 40 you add 40
Because blue starts at hex 80 you add 80

Starting from 20 a bit shift < is then 40 then another shift is 80.

EDIT: formatted a little better
This time the problem is rather odd, when sprites hit the right side of the block everything works fine, but if the sprite hits the left side of the block the code is triggered between 10+ times. Any ideas?

The code can be found at

I am at a loss as to why if anybody could tell me I would appreciate it greatly!

I am using Block Tool Super Deluxe 0.43
The ROM is clean other than saving it in lunar magic.
JMP Return : JMP Return : JMP Return : JMP Return : JMP Main : JMP Return : JMP Return

Looks like one goes to main to me...

Only sprite horizontal should run not vertical. I forgot to point that out.
Originally posted by ninja boy
So I know there are like 4 different number symbol things in ASM I know three of them off hand but I have forgotten what that stand for.

The ones I know are:
but could some one shed light on what these stand for. Also what is the forth one that stands for binary?

$ explained above...
#$ explained above...
! is like #DEFINE in C/C++
!FREESPACE = $123456
means !FREESPACE is defined as $123456 and can be used throughout your code so that if you need to change it, you only need to change the initial !FREESPACE = $123456.
Nope I have made sure not to have them open at the same time. I'll try starting on a new ROM maybe something got messed up at one point. (good thing I try things on test ROMs first :))

EDIT: reworded to make it sound less odd.

EDIT2: No success. Sprites still pass through the block as if it is not there. Would the sprite I am using(bullet bill) make a difference?
Pages: « 1 2 3 469 70 »
p4plus2's Profile - Posts by p4plus2

The purpose of this site is not to distribute copyrighted material, but to honor one of our favourite games.

Copyright © 2005 - 2021 - SMW Central
Legal Information - Privacy Policy - Link To Us


Follow Us On

  • YouTube
  • Twitch
  • Twitter


  • Super Mario Bros. X Community
  • Mario Fan Games Galaxy
  • sm64romhacks